카테고리:

날짜 및 시간 함수

TIMEADD

지정된 날짜 또는 시간 부분의 지정된 값을 날짜, 시간 또는 타임스탬프에 추가합니다.

DATEADD 의 별칭입니다.

구문

TIMEADD( <date_or_time_part> , <value> , <date_or_time_expr> )
Copy

인자

date_or_time_part

추가하려는 시간 단위를 나타냅니다. 예를 들어, 2일을 더하려면 day 를 지정합니다. 이 측정 단위는 지원되는 날짜 및 시간 부분 에 나열된 값 중 하나여야 합니다.

value

추가하려는 시간 단위 수입니다. 예를 들어, 시간 단위가 day 이고 2일을 더하려면 2 를 지정합니다. 2일을 빼려면 -2 를 지정합니다.

date_or_time_expr

date_or_time_expr 은 날짜, 시간 또는 타임스탬프로 평가되어야 합니다. 이는 추가하려는 날짜, 시간 또는 타임스탬프입니다. 예를 들어, 2024년 8월 1일에 2일을 더하려면 '2024-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_partday 이상인 경우(예: month, year) 이 함수는 DATE 값을 반환합니다.

  • date_or_time_part 가 하루보다 작은 경우(예: hour, minute, second), 함수는 날짜의 시작 시간으로 00:00:00.000 을 사용하여 TIMESTAMP_NTZ 값을 반환합니다.

사용법 노트

date_or_time_partyear, quarter 또는 month (또는 이들의 변형)일 때, 결과 월의 일수가 해당 월의 원래 날짜보다 적은 경우, 해당 월의 결과 날짜는 원래 날짜와 다를 수 있습니다.

날짜에 연도를 추가합니다.

SELECT TO_DATE('2022-05-08') AS original_date,
       DATEADD(year, 2, TO_DATE('2022-05-08')) AS date_plus_two_years;
Copy
+---------------+---------------------+
| ORIGINAL_DATE | DATE_PLUS_TWO_YEARS |
|---------------+---------------------|
| 2022-05-08    | 2024-05-08          |
+---------------+---------------------+

날짜에서 연도를 뺍니다.

SELECT TO_DATE('2022-05-08') AS original_date,
       DATEADD(year, -2, TO_DATE('2022-05-08')) AS date_minus_two_years;
Copy
+---------------+----------------------+
| ORIGINAL_DATE | DATE_MINUS_TWO_YEARS |
|---------------+----------------------|
| 2022-05-08    | 2020-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 ('2022-04-05');
Copy

날짜에 2년과 2시간을 더하는 쿼리를 실행합니다.

SELECT d AS original_date,
       DATEADD(year, 2, d) AS date_plus_two_years,
       TO_TIMESTAMP(d) AS original_timestamp,
       DATEADD(hour, 2, d) AS timestamp_plus_two_hours
  FROM datetest;
Copy
+---------------+---------------------+-------------------------+--------------------------+
| ORIGINAL_DATE | DATE_PLUS_TWO_YEARS | ORIGINAL_TIMESTAMP      | TIMESTAMP_PLUS_TWO_HOURS |
|---------------+---------------------+-------------------------+--------------------------|
| 2022-04-05    | 2024-04-05          | 2022-04-05 00:00:00.000 | 2022-04-05 02:00:00.000  |
+---------------+---------------------+-------------------------+--------------------------+

결과 월과 같거나 더 많은 일수가 있는 월의 날짜에 한 달을 추가합니다. 예를 들어, 날짜가 1월 31일인 경우 한 달을 더해도 2월 31일을 반환하면 안 됩니다.

SELECT DATEADD(month, 1, '2023-01-31'::DATE) AS date_plus_one_month;
Copy
+---------------------+
| DATE_PLUS_ONE_MONTH |
|---------------------|
| 2023-02-28          |
+---------------------+

결과 월보다 일수가 적은 월의 날짜에 한 달을 추가합니다. 2월 28일에 한 달을 더하면 3월 28일을 반환합니다.

SELECT DATEADD(month, 1, '2023-02-28'::DATE) AS date_plus_one_month;
Copy
+---------------------+
| DATE_PLUS_ONE_MONTH |
|---------------------|
| 2023-03-28          |
+---------------------+