본문으로 건너뛰기
최종 수정: 에

TIMESTAMPADD

설명​

date_add 함수와 동일한 기능을 제공합니다. TIMESTAMPADD 함수는 주어진 datetime 값에 지정된 단위의 시간 간격을 더하거나 뺀 후, 계산된 datetime 값을 반환합니다. 이 함수는 초, 분, 시, 일, 주, 월, 년 등 다양한 시간 단위를 지원하며, 날짜와 시간의 오프셋을 유연하게 계산할 수 있습니다. 음수 간격은 해당 시간만큼 빼는 것을 의미합니다.

이 함수는 MySQL의 timestampadd 함수와 동일하게 동작합니다.

구문​

TIMESTAMPADD(<unit>, <interval>, <date_or_time_expr>)

매개변수​

매개변수설명
<unit>더할 시간의 단위를 지정합니다. 일반적으로 사용하는 값으로는 SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR가 있습니다.
<interval>더할 시간 간격입니다. 일반적으로 정수이며, 양수 또는 음수로 시간을 더하거나 뺄 수 있습니다.
<date_or_time_expr>유효한 대상 날짜로, date/datetime 타입의 입력을 지원합니다. 구체적인 날짜 및 시간 형식은 datetime 변환과 date 변환을 참조하세요.

반환값​

기준 날짜 및 시간에 지정된 간격을 더한 결과를 반환합니다.

  • 입력이 date 타입이고 시간 단위가 YEAR/MONTH/WEEK/DAY이면 date 타입을 반환하고, 그 외에는 datetime 타입을 반환합니다.
  • 입력이 datetime 타입이면 반환값도 datetime 타입입니다.
  • 계산 결과가 DATETIME 타입의 유효 범위(0000-01-01 00:00:00부터 9999-12-31 23:59:59.999999까지)를 벗어나면 예외가 발생합니다.
  • <datetime_expr>이 유효하지 않은 날짜(예: 0000-00-00, 2023-13-01)이거나 <unit>이 지원되지 않는 단위이면 예외가 발생합니다.
  • 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
  • 월/년 단위로 계산할 때는 월말 날짜를 자동으로 조정합니다(예: 2023-01-31에 1개월을 더하면 윤년 여부에 따라 2023-02-28 또는 2023-02-29가 됩니다).

예제​

-- Add 1 minute
SELECT TIMESTAMPADD(MINUTE, 1, '2019-01-02') AS result;
+---------------------+
| result |
+---------------------+
| 2019-01-02 00:01:00 |
+---------------------+

-- Add 1 week (7 days)
SELECT TIMESTAMPADD(WEEK, 1, '2019-01-02') AS result;
+------------+
| result |
+------------+
| 2019-01-09 |
+------------+

-- Subtract 3 hours
SELECT TIMESTAMPADD(HOUR, -3, '2023-07-13 10:30:00') AS result;
+---------------------+
| result |
+---------------------+
| 2023-07-13 07:30:00 |
+---------------------+

-- End of month plus 1 month (automatically adapts to February days)
SELECT TIMESTAMPADD(MONTH, 1, '2023-01-31') AS result;
+------------+
| result |
+------------+
| 2023-02-28 |
+------------+

-- Cross-year add 1 year
SELECT TIMESTAMPADD(YEAR, 1, '2023-12-31 23:59:59') AS result;
+---------------------+
| result |
+---------------------+
| 2024-12-31 23:59:59 |
+---------------------+

-- Invalid unit
SELECT TIMESTAMPADD(MIN, 5, '2023-01-01') AS result;
ERROR 1105 (HY000): errCode = 2, detailMessage = Unsupported time stamp diff time unit: MIN, supported time unit: YEAR/MONTH/WEEK/DAY/HOUR/MINUTE/SECOND

-- Any parameter is NULL
SELECT TIMESTAMPADD(YEAR,NULL, '2023-12-31 23:59:59') AS result;
+--------+
| result |
+--------+
| NULL |
+--------+

-- Calculation result exceeds datetime range
SELECT TIMESTAMPADD(YEAR,10000, '2023-12-31 23:59:59') AS result;
ERROR 1105 (HY000): errCode = 2, detailMessage = (10.16.10.3)[E-218]Operation years_add of 2023-12-31 23:59:59, 10000 out of range