Purpose
This function converts a string of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 data type to an INTERVAL DAY TO SECOND value, which can be used to perform addition and subtraction operations on a datetime 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 string of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 data type in this format.
|
| [-] P[days D] [T[hours H][minutes M][seconds[.frac_secs]S] | A string of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 data type in this format.Notice No spaces are allowed in the value. |
| frac_secs | The fractional part of seconds, which is an integer in the range of [0,999999999]. |
Return type
INTERVAL DAY TO SECOND
Examples
Return the datetime value 100 days after November 11, 2021 in SQL format.
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 setReturn the datetime value 100 days and 10 hours after December 12, 2021 in ISO format.
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