본문 바로가기

[오라클 레퍼런스 함수] TO_DSINTERVAL - INTERVAL DAY TO SECOND 형식으로 변환

by ㅇㅍㅍ 2023. 8. 31.
[오라클 레퍼런스 함수] TO_DSINTERVAL - INTERVAL DAY TO SECOND 형식으로 변환
728x90

 

TO_DSINTERVAL

 

구문

TO_DSINTERVAL ( ' { sql_format | ds_iso_format } '
  [ DEFAULT return_value ON CONVERSION ERROR ] )

 

sql_format::=
[+ | -] days hours : minutes : seconds [. frac_secs ]

ds_iso_format::=
[-] P [days D]
  [T [hours H] [minutes M] [seconds [. frac_secs] S ] ]

 

노트: 이전 릴리스에서는 TO_DSINTERVAL 함수가 선택적으로 nlsparam 절을 허용했습니다. 이 절은 여전히 하위 호환성을 위해 허용되지만 효과가 없습니다.

 

목적

TO_DSINTERVAL은 인수를 INTERVAL DAY TO SECOND 데이터 유형의 값으로 변환합니다.

인수로는 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 데이터 유형의 문자열로 평가되는 표현식을 지정할 수 있습니다.

TO_DSINTERVAL은 두 가지 형식 중 하나로 인수를 받아들입니다:

  • SQL 표준(ISO/IEC 9075)과 호환되는 SQL 간격 형식
  • ISO 8601:2004 표준과 호환되는 ISO 기간 형식

 

SQL 형식에서는 days는 0에서 999999999 사이의 정수, hours는 0에서 23 사이의 정수이며, minutesseconds는 0에서 59 사이의 정수입니다. frac_secs는 .0에서 .999999999 사이의 초의 소수 부분입니다. days와 hours 사이에 하나 이상의 공백이 올 수 있습니다. 형식 요소 사이에 추가 공백이 허용됩니다.

ISO 형식에서는 days, hours, minutes 및 seconds는 0에서 999999999 사이의 정수이며, frac_secs는 .0에서 .999999999 사이의 초의 소수 부분입니다. 값에 공백은 허용되지 않습니다. T를 지정하면 반드시 hours, minutes 또는 seconds 값 중 하나를 지정해야 합니다.

선택적인 DEFAULT return_value ON CONVERSION ERROR 절을 사용하여 이 함수가 인수를 INTERVAL DAY TO SECOND 유형으로 변환하는 동안 오류가 발생할 경우 이 함수가 반환하는 값을 지정할 수 있습니다. 이 절은 인수를 평가하는 동안 오류가 발생할 경우에는 효과가 없습니다. return_value는 표현식이거나 바인드 변수일 수 있으며 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 데이터 유형의 문자열로 평가되어야 합니다. SQL 형식 또는 ISO 형식 중 하나일 수 있으며, 함수 인수와 동일한 형식일 필요는 없습니다. return_valueINTERVAL DAY TO SECOND 유형으로 변환할 수 없는 경우 함수가 오류를 반환합니다.

 

예제

다음 예제는 SQL 형식을 사용하여 2002년 11월 1일에 회사에서 최소 100일 이상 근무한 직원을 hr.employees 테이블에서 선택합니다:

SELECT employee_id, last_name FROM employees
   WHERE hire_date + TO_DSINTERVAL('100 00:00:00')
   <= DATE '2002-11-01'
   ORDER BY employee_id;

EMPLOYEE_ID LAST_NAME
----------- ---------------
        102 De Haan
        203 Mavris
        204 Baer
        205 Higgins
        206 Giet

 

다음 예제는 ISO 형식을 사용하여 2009년의 시작으로부터 100일 5시간 후의 타임스탬프를 표시합니다:

SELECT TO_CHAR(TIMESTAMP '2009-01-01 00:00:00' + TO_DSINTERVAL('P100DT05H'),
   'YYYY-MM-DD HH24:MI:SS') "Time Stamp"
     FROM DUAL;

Time Stamp
-------------------
2009-04-11 05:00:00

 

다음 예제는 지정된 표현식을 INTERVAL DAY TO SECOND 값으로 변환할 수 없기 때문에 기본값을 반환합니다:

SELECT TO_DSINTERVAL('1o 1:02:10'
       DEFAULT '10 8:00:00' ON CONVERSION ERROR) "Value"
  FROM DUAL;

Value
-----------------------------
+000000010 08:00:00.000000000

 


출처: 오라클 레퍼런스

원문 링크: Oracle TO_DSINTERVAL 함수 문서

 

반응형

댓글