SQL道場 日付時刻関数 DATE_ADD/ADDDATE関数

SQLで日付の足し算をするDATE_ADD/ADDDATE関数について記載しています。

対応データベース:MySQL

DATE_ADD/ADDDATE関数の文法

SELECT DATE_ADD(日付,INTERVAL 加算値 日付要素) FROM テーブル
SELECT ADDDATE(日付,INTERVAL 加算値 日付要素) FROM テーブル
引数
Arguments
日付
Date
文字列型
String type
加算値
Addition value
数値型
numeric type
日付要素
Date element
返値
return value
文字型 計算後の日付が戻ります
Returns the date after character type calculation

DATE_ADD関数とADDDATE関数は同じ機能を持つ関数です。DATE_ADD/ADDDATE関数は指定された日付の日付要素に対して数値を加算します。数値にマイナス値を指定した場合は日付の日付要素から減算します。

これらの関数は日付演算を実行します。 date 引数は、開始日または日時の値を指定します。expr は、開始日に対して加算または減算される間隔値を指定する式です。expr は文字列として評価されます。負の間隔では – で始まる場合があります。unit は、式を解釈する単位を示すキーワードです。

unit 指定子の完全なリスト、各 unit 値に必要な expr 引数の形式、および時間演算でのオペランド解釈の規則など、時間間隔構文の詳細は、時間間隔 を参照してください。

戻り値は引数によって異なります。

date 引数が DATE 値で、計算に YEAR、MONTH および DAY 部分のみが含まれる (つまり、時間部分が含まれない) 場合は、DATE。

第 1 引数が DATETIME (または TIMESTAMP) 値である場合と、第 1 引数が DATE で、unit 値に HOURS、MINUTES、または SECONDS が使用されている場合は、DATETIME です。

それ以外の場合は文字列です。

必ず結果が DATETIME になるようにするには、CAST() を使用すれば、第 1 引数を DATETIME に変換できます。

https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_date-add

MySQLの日付要素

日付要素
Date element
単位
Unit
加算値の形式
addition value format
SECOND数値
MINUTE数値
HOUR時間数値
DAY
or
DAYS
数値
MONTH
or
MONTHS
数値
YEAR
or
YEARS
数値
MINUTE_SECOND分秒mm:ss
HOUR_MINUTE時分hh:mm
DAY_HOUR日時dd hh
YEAR_MONTH年月yy-mm
HOUR_SECOND時分秒hh:mm:ss
DAY_MINUTE日時分dd hh:mm
DAY_SECOND日時分秒dd hh:mm:ss

実行例

MySQLの実行例

2か月後の日付を求める

/* MySQL 2023年1月15日から2か月後の日付を求めるサンプル */
SELECT DATE_ADD('2023-12-31',INTERVAL 2 MONTH);
DATE_ADD/ADDDATE関数サンプル実行結果

2か月前の日付を求める

/* MySQL 2023年1月15日から2か月後の日付を求めるサンプル */
SELECT DATE_ADD('2023-12-31',INTERVAL -2 MONTH);
DATE_ADD/ADDDATE関数サンプル実行結果

120日後を求めます

/* MySQL 現在日付から120日後の日付を求めるサンプル */
SELECT DATE_ADD(NOW(), INTERVAL 120 DAY);
DATE_ADD/ADDDATE関数サンプル実行結果