Purpose
This function converts a CHAR, VARCHAR2, NCHAR, or NVARCHAR2 data type string into an INTERVAL DAY TO SECOND data type value, which can be used for adding or subtracting from a date or timestamp value.
Syntax
/*SQL date format*/
TO_DSINTERVAL ('[+ | -] days hours:minutes:seconds[.frac_secs]')
/*ISO date format*/
TO_DSINTERVAL ('[-] P[days D]
[T[hours H][minutes M][seconds[.frac_secs]S]]')
Parameters
| Parameter | Description |
|---|---|
| [+ | -]days hours:minutes:seconds[.frac_secs] | A CHAR, VARCHAR2, NCHAR, or NVARCHAR2 data type string that conforms to this parameter format.
|
| [-] P[days D] [T[hours H][minutes M][seconds[.frac_secs]S] | A CHAR, VARCHAR2, NCHAR, or NVARCHAR2 data type string that conforms to this parameter format. Note No spaces are allowed in the value. |
| frac_secs | The decimal part of seconds, which is an optional parameter. It is an integer in the range of [0,999999999]. |
Return type
INTERVAL DAY TO SECOND
Examples
Use the SQL format to return the date and time value 100 days after November 11, 2021.
obclient> SELECT TO_CHAR(TIMESTAMP '2021-11-11 00:00:00'+TO_DSINTERVAL('100 00:00:00'), 'YYYY-MM-DD HH24:MI:SS') "Time Stamp" FROM DUAL; +---------------------+ | Time Stamp | +---------------------+ | 2022-02-19 00:00:00 | +---------------------+ 1 row in setUse the ISO format to return the date and time value 100 days and 10 hours after December 12, 2021.
obclient> SELECT TO_CHAR(TIMESTAMP '2021-11-11 00:00:00'+TO_DSINTERVAL('P100DT5H'), 'YYYY-MM-DD HH24:MI:SS') "Time Stamp" FROM DUAL; +---------------------+ | Time Stamp | +---------------------+ | 2022-02-19 05:00:00 | +---------------------+ 1 row in set