

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# DATEADD 함수
<a name="r_DATEADD_function"></a>

DATE, TIME, TIMETZ 또는 TIMESTAMP 값을 지정된 간격만큼 늘립니다.

## 구문
<a name="r_DATEADD_function-synopsis"></a>

```
DATEADD( datepart, interval, {date|time|timetz|timestamp} )
```

## 인수
<a name="r_DATEADD_function-arguments"></a>

 *datepart*   
함수가 작동하는 날짜 부분(예: 년, 월, 일 또는 시)입니다. 자세한 내용은 [날짜 또는 타임스탬프 함수의 날짜 부분](r_Dateparts_for_datetime_functions.md) 섹션을 참조하세요.

 *간격*   
대상 표현식에 합산할 간격(일 수 등)을 지정한 정수입니다. 음의 정수는 간격을 감산합니다.

 *date*\$1*time*\$1*timetz*\$1*timestamp*  
DATE, TIME, TIMETZ 또는 TIMESTAMP 열 또는 암시적으로 DATE, TIME, TIMETZ 또는 TIMESTAMP로 변환하는 표현식입니다. DATE, TIME, TIMETZ 또는 TIMESTAMP 표현식에 지정한 날짜 부분이 포함되어야 합니다.

## 반환 타입
<a name="r_DATEADD_function-return-type"></a>

입력 데이터 형식에 따라 TIMESTAMP, TIME 또는 TIMETZ입니다.

## DATE 열이 있는 예
<a name="r_DATEADD_function-examples"></a>

다음은 DATE 테이블에 존재하는 11월 데이터에 각각 30일을 합산하는 예입니다.

```
select dateadd(day,30,caldate) as novplus30
from date
where month='NOV'
order by dateid;

novplus30
---------------------
2008-12-01 00:00:00
2008-12-02 00:00:00
2008-12-03 00:00:00
...
(30 rows)
```

 다음 예에서는 리터럴 날짜 값에 18개월을 추가합니다.

```
select dateadd(month,18,'2008-02-28');

date_add
---------------------
2009-08-28 00:00:00
(1 row)
```

DATEADD 함수에 사용되는 기본 열 이름은 DATE\$1ADD입니다. 날짜 값을 나타내는 기본 타임스탬프는 `00:00:00`입니다.

다음 예에서는 타임스탬프를 지정하지 않는 날짜 값에 30분을 추가합니다.

```
select dateadd(m,30,'2008-02-28');

date_add
---------------------
2008-02-28 00:30:00
(1 row)
```

날짜 부분은 전체 이름으로 또는 약어로 지정할 수 있습니다. 이 경우 *m*은 월이 아닌 분을 나타냅니다.

## TIME 열이 있는 예
<a name="r_DATEADD_function-examples-time"></a>

다음 예제 테이블 TIME\$1TEST에는 3개의 값이 삽입된 TIME\$1VAL(TIME 형식) 열이 있습니다.

```
select time_val from time_test;
            
time_val
---------------------
20:00:00
00:00:00.5550
00:58:00
```

다음 예에서는 TIME\$1TEST 테이블의 각 TIME\$1VAL에 5분을 추가합니다.

```
select dateadd(minute,5,time_val) as minplus5 from time_test;
            
minplus5
---------------
20:05:00
00:05:00.5550
01:03:00
```

다음 예에서는 리터럴 시간 값에 8시간을 추가합니다.

```
select dateadd(hour, 8, time '13:24:55');
            
date_add
---------------
21:24:55
```

다음 예에서는 시간이 24:00:00을 초과하거나 00:00:00 미만인 경우를 보여줍니다.

```
select dateadd(hour, 12, time '13:24:55');
            
date_add
---------------
01:24:55
```

## TIMETZ 열이 있는 예
<a name="r_DATEADD_function-examples-timetz"></a>

이 예의 출력 값은 기본 표준 시간대인 UTC를 기준으로 합니다.

다음 예제 테이블 TIMETZ\$1TEST에는 3개의 값이 삽입된 TIMETZ\$1VAL(TIMETZ 형식) 열이 있습니다.

```
select timetz_val from timetz_test;
            
timetz_val
------------------
04:00:00+00
00:00:00.5550+00
05:58:00+00
```

다음 예에서는 TIMETZ\$1TEST 테이블의 각 TIMETZ\$1VAL에 5분을 추가합니다.

```
select dateadd(minute,5,timetz_val) as minplus5_tz from timetz_test;
            
minplus5_tz
---------------
04:05:00+00
00:05:00.5550+00
06:03:00+00
```

다음 예에서는 리터럴 timetz 값에 2시간을 추가합니다.

```
select dateadd(hour, 2, timetz '13:24:55 PST');
            
date_add
---------------
23:24:55+00
```

## TIMESTAMP 열이 있는 예시
<a name="r_DATEADD_function-examples-timestamp"></a>

이 예의 출력 값은 기본 표준 시간대인 UTC를 기준으로 합니다.

다음 예시 테이블 TIMESTAMP\$1TEST에는 3개의 값이 삽입된 TIMESTAMP\$1VAL(TIMESTAMP 형식) 열이 있습니다.

```
SELECT timestamp_val FROM timestamp_test;
            
timestamp_val
------------------
1988-05-15 10:23:31
2021-03-18 17:20:41
2023-06-02 18:11:12
```

다음 예시에서는 2000년 이전의 TIMESTAMP\$1TEST의 TIMESTAMP\$1VAL 값에만 20년을 더합니다.

```
SELECT dateadd(year,20,timestamp_val) 
FROM timestamp_test
WHERE timestamp_val < to_timestamp('2000-01-01 00:00:00', 'YYYY-MM-DD HH:MI:SS');
            
date_add
---------------
2008-05-15 10:23:31
```

다음 예시에서는 초 표시기 없이 작성된 리터럴 타임스탬프 값에 5초를 추가합니다.

```
SELECT dateadd(second, 5, timestamp '2001-06-06');
            
date_add
---------------
2001-06-06 00:00:05
```

## 사용 노트
<a name="r_DATEADD_usage_notes"></a>

 DATEADD(month, ...) 함수와 ADD\$1MONTHS 함수는 매월 마지막 날짜를 서로 다르게 처리합니다.
+ ADD\$1MONTHS: 합산하려는 날짜가 월의 마지막 날짜인 경우에는 월의 길이에 상관없이 항상 결과에 따른 월의 마지막 날짜가 반환됩니다. 예를 들어 다음과 같이 4월 30일에 1개월을 합산하면 5월 31일이 됩니다.

  ```
  select add_months('2008-04-30',1);
  
  add_months
  ---------------------
  2008-05-31 00:00:00
  (1 row)
  ```
+ DATEADD: 합산하려는 날짜의 일 수가 결과에 따른 월보다 적은 경우에는 결과에 따른 월의 마지막 날짜가 아니고 해당하는 날짜가 반환됩니다. 예를 들어 다음과 같이 4월 30일에 1개월을 합산하면 5월 30일이 됩니다.

  ```
  select dateadd(month,1,'2008-04-30');
  
  date_add
  ---------------------
  2008-05-30 00:00:00
  (1 row)
  ```

DATEADD 함수는 dateadd(month, 12,…)를 사용할 때와 dateadd(year, 1, …)을 사용할 때 윤년 날짜인 2월 29일을 각각 다르게 처리합니다.

```
select dateadd(month,12,'2016-02-29');
               
date_add
---------------------
2017-02-28 00:00:00

select dateadd(year, 1, '2016-02-29');

date_add       
---------------------
2017-03-01 00:00:00
```