- 카테고리:
DATEADD¶
지정된 날짜 또는 시간 부분의 지정된 값을 날짜, 시간 또는 타임스탬프에 추가합니다.
- 별칭:
- 참고 항목:
구문¶
DATEADD( <date_or_time_part>, <value>, <date_or_time_expr> )
인자¶
date_or_time_part
추가하려는 시간 단위를 나타냅니다. 예를 들어, 2일을 추가하려는 경우 이는
DAY
가 됩니다. 이 측정 단위는 지원되는 날짜 및 시간 부분 에 나열된 값 중 하나여야 합니다.value
추가하려는 시간 단위 수입니다. 예를 들어, 2일을 추가하려는 경우 이는 2가 됩니다.
date_or_time_expr
date_or_time_expr
은 날짜, 시간 또는 타임스탬프로 평가되어야 합니다. 이는 추가하려는 날짜, 시간 또는 타임스탬프입니다. 예를 들어, 2018년 8월 1일에 2일을 추가하려는 경우 이는'2018-08-01'::DATE
가 됩니다.데이터 타입이 TIME인 경우,
date_or_time_part
은 일(日) 이상이 아닌, 시간 이하의 단위여야 합니다.입력 데이터 타입이 DATE이고
date_or_time_part
이 시간 이하인 경우, 입력 값은 거부되지 않고 대신 TIMESTAMP로 처리되며, 여기서 시간, 분, 초, 소수 자리 초가 모두 처음에 0으로 설정됩니다(예: 지정된 날짜의 자정).
반환¶
date_or_time_expr
이 시간인 경우:
반환 데이터 타입은 시간입니다.
date_or_time_expr
이 타임스탬프인 경우:
반환 데이터 타입은 타임스탬프입니다.
date_or_time_expr
이 날짜인 경우:
date_or_time_part
이day
이상인 경우(예:month
,year
), 함수는 DATE 값을 반환합니다.
date_or_time_part
이 일보다 작은 경우(예:hour
,minute
,second
), 함수는 날짜의 시작 시간으로 00:00:00.000을 사용하여 TIMESTAMP_NTZ 값을 반환합니다.
사용법 노트¶
date_or_time_part
이year
,quarter
또는month
(또는 이들의 변형)일 때, 결과 월의 일수가 해당 월의 원래 날짜보다 적은 경우, 해당 월의 결과 날짜는 원래 날짜와 다를 수 있습니다.
예¶
날짜에 연도를 추가합니다.
SELECT TO_DATE('2013-05-08') AS v1, DATEADD(year, 2, TO_DATE('2013-05-08')) AS v;출력:
+------------+------------+ | V1 | V | |------------+------------| | 2013-05-08 | 2015-05-08 | +------------+------------+
날짜에 2년 2시간을 추가합니다.
이 예 및 일부 후속 예의 초기 설정입니다.
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF9'; CREATE TABLE datetest (d date); INSERT INTO datetest VALUES ('2013-04-05');날짜에 2년 2시간을 추가하는 쿼리입니다.
SELECT d AS "DATE", dateadd(year, 2, d) AS add_2_years, dateadd(hour, 2, d) AS add_2_hours FROM datetest;출력:
+------------+-------------+-------------------------+ | DATE | ADD_2_YEARS | ADD_2_HOURS | |------------+-------------+-------------------------| | 2013-04-05 | 2015-04-05 | 2013-04-05 02:00:00.000 | +------------+-------------+-------------------------+
타임스탬프에 시간을 추가합니다.
SELECT TO_TIMESTAMP_LTZ('2013-05-08 11:22:33.444') AS v1, DATEADD(HOUR, 2, TO_TIMESTAMP_LTZ('2013-05-08 11:22:33.444')) AS v;출력:
+-------------------------------+-------------------------------+ | V1 | V | |-------------------------------+-------------------------------| | 2013-05-08 11:22:33.444000000 | 2013-05-08 13:22:33.444000000 | +-------------------------------+-------------------------------+
결과 월과 같거나 더 많은 일수가 있는 월의 날짜에 한 달을 추가합니다. 예를 들어, 오늘이 1월 31일이면 월을 추가해도 “2월 31일”이 되지 않아야 합니다.
SELECT DATEADD(MONTH, 1, '2000-01-31'::DATE) AS DIFFERENT_DAY;출력:
+---------------+ | DIFFERENT_DAY | |---------------| | 2000-02-29 | +---------------+
결과 월보다 일수가 적은 월의 날짜에 한 달을 추가합니다. 2월 29일에 한 달을 추가하면 3월 29일이 되며 이는 안전합니다.
SELECT DATEADD(MONTH, 1, '2000-02-29'::DATE) AS RESULT;출력:
+------------+ | RESULT | |------------| | 2000-03-29 | +------------+