SQL道場 日付時刻関数 DATE_SUB/SUBDATE関数
SQLで日付の引き算をするDATE_SUB/SUBDATE関数について記載しています。
対応データベース:MySQL
DATE_SUB/SUBDATE関数の文法
SELECT DATE_SUB(日付,INTERVAL 減算値 日付要素) FROM テーブル
SELECT SUBDATE(日付,INTERVAL 減算値 日付要素) FROM テーブル
引数 Arguments | 日付 Date | 文字列型 String type |
減算値 subtracted value | 数値型 numeric type | |
日付要素 Date element | ||
返値 return value | 文字型 計算後の日付が戻ります Returns the date after character type calculation |
DATE_SUB関数は指定された日付の日付要素に対して数値を減算します。SUBDATE関数も同じ値を戻します。
これらの関数は日付演算を実行します。 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-sub
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の実行例
/* MySQL 2023年1月15日から2か月前の日付を求めるサンプル */
SELECT DATE_SUB('2023-12-31',INTERVAL 2 MONTH);