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);
2か月前の日付を求める
/* MySQL 2023年1月15日から2か月後の日付を求めるサンプル */
SELECT DATE_ADD('2023-12-31',INTERVAL -2 MONTH);
120日後を求めます
/* MySQL 現在日付から120日後の日付を求めるサンプル */
SELECT DATE_ADD(NOW(), INTERVAL 120 DAY);