メインコンテンツまでスキップ
バージョン: 26.x

ADD_TIME

デスクリプション

指定された時間間隔を日付/時刻または時刻表現に加算します。2番目のパラメータが負の値の場合、1番目のパラメータから間隔を減算することと同等です。

Syntax

ADD_TIME(`<date_or_time_expr>`, `<time>`)

パラメータ

パラメータ説明
<date_or_time_expr>有効な日付式。datetime/date/time型の入力をサポートします。型がdateの場合、その日の開始時刻(00:00:00)に変換されます。具体的なdatetime/time形式については、datetime変換およびtime変換を参照してください。
<time>有効な時刻式で、<date_or_time_expr>に加算する時間値を表します。負の値の場合は減算を意味します。time型の入力をサポートします。

戻り値

<date_or_time_expr><time>を加算した結果を返します。戻り値の型は第1パラメータの型によって決まります:

  • 第1パラメータがdatetime型の場合、datetime型を返します。
  • 第1パラメータがtime型の場合、time型を返します。

特殊ケース:

  • 入力パラメータのいずれかがnullの場合、nullを返します。
  • 第1パラメータがtime型で結果がtime型の範囲を超える場合、最大値(または最小値)の時間値を返します。
  • 第1パラメータがdatetime型で結果がdatetime型の範囲を超える場合、エラーが発生します。

-- Add time when the first parameter is datetime type
SELECT ADD_TIME('2025-09-19 12:00:00', '01:30:00');
+---------------------------------------------+
| ADD_TIME('2025-09-19 12:00:00', '01:30:00') |
+---------------------------------------------+
| 2025-09-19 13:30:00 |
+---------------------------------------------+

-- Add time when the first parameter is time type
SELECT ADD_TIME(cast('12:15:20' as time), '00:10:40');
+------------------------------------------------+
| ADD_TIME(cast('12:15:20' as time), '00:10:40') |
+------------------------------------------------+
| 12:26:00 |
+------------------------------------------------+

-- NULL parameter test
SELECT ADD_TIME(NULL, '01:00:00');
+----------------------------+
| ADD_TIME(NULL, '01:00:00') |
+----------------------------+
| NULL |
+----------------------------+

SELECT ADD_TIME('2025-09-19 12:00:00', NULL);
+---------------------------------------+
| ADD_TIME('2025-09-19 12:00:00', NULL) |
+---------------------------------------+
| NULL |
+---------------------------------------+

SELECT ADD_TIME(NULL, NULL);
+----------------------+
| ADD_TIME(NULL, NULL) |
+----------------------+
| NULL |
+----------------------+

-- Time type out-of-range test (returns max/min value)
SELECT ADD_TIME(cast('835:30:00' as time), '21:00:00');
+-------------------------------------------------+
| ADD_TIME(cast('835:30:00' as time), '21:00:00') |
+-------------------------------------------------+
| 838:59:59 |
+-------------------------------------------------+

SELECT ADD_TIME(cast('-832:30:00' as time), '-31:00:00');
+---------------------------------------------------+
| ADD_TIME(cast('-832:30:00' as time), '-31:00:00') |
+---------------------------------------------------+
| -838:59:59 |
+---------------------------------------------------+

-- Datetime type out-of-range test (throws error)
SELECT ADD_TIME('9999-12-31 23:59:59', '00:00:01');
ERROR 1105 (HY000): errCode = 2, detailMessage = (10.16.10.3)[INVALID_ARGUMENT]datetime value is out of range in function add_time

SELECT ADD_TIME('0000-01-01 00:00:00', '-00:00:01');
ERROR 1105 (HY000): errCode = 2, detailMessage = (10.16.10.3)[INVALID_ARGUMENT]datetime value is out of range in function add_time