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);
DATE_SUB/SUBDATE関数サンプル実行結果