MySQL では、DATE_SUB()
関数を使用して日付から指定した時間を減算することができます。 例えば、指定された日付から7日間を引くために使用することができます。 日、週、月、四半期、年などの単位を指定することができます。 また、秒、マイクロ秒などの時間値を引くこともできます。
この関数は、日付に足すのではなく、日付から引くという点を除き、DATE_ADD()
に似ています。
構文
構文は次のようになります。
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Result:
+------------+| Result |+------------+| 2021-05-02 |+------------+
この例は、最初の引数で与えられた日付から5日を引きます。
Example 2 – Other Date Units
日、週、月、年などの単位で指定することができます。 以下に例を示します。
SELECT '2021-05-07' AS 'Start Date', DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks', DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months', DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters', DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';
Result:
+------------+------------+------------+-------------+------------+| Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years |+------------+------------+------------+-------------+------------+| 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 |+------------+------------+------------+-------------+------------+
Example 3 – Time Units
日付/時刻値から時間単位を差し引くこともできます。 以下はその例です。
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Result:
+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+
また、同時に複数の単位を指定することも可能です。 例えば、時間と分を指定することができます。 このように。
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Result:
+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+
Expected Values
次の表は、有効な単位値とその期待される形式を示したものです。
unit Value |
Expected expr Format |
|||
---|---|---|---|---|
MICROSECOND | MICROSECONDS | |||
秒 | 秒 | |||
分 | 分 | |||
時 | 時 | |||
日 | 日 | |||
週 | 週 | |||
月 | 月 | |||
quarter | quarter | |||
year | years | |||
second_microsecond | ‘seconds.microseconds’ | |||
minute_microsecond | ‘minutes:seconds.マイクロ秒’ | |||
分_秒 | 分:秒’ | |||
時_マイクロ秒 | 時:分:秒’。マイクロ秒’ | |||
hour_second | ‘hours:minutes:seconds’ | |||
hour_minute | ‘hours:minutes’ | |||
day_microsecond | ‘days hours:minutes:seconds.S’ | hour_second’ | h:m:second’ | hour_second’ |
day_second | ‘days hours:minutes:seconds’ | |||
day_minute | ‘days hours.SECOND’ | day_minute’ | ‘days hours:分’ | |
day_hour | 日時’ | |||
year_month | 年-‘秒’ | |||
year_hour | 日時’ |
また、SUBDATE()
関数を使って同じことができます(同じ構文を使用する場合はDATE_SUB()
関数と同義語になります)。
さらに、SUBDATE()
の構文には第2形式があり、これは日付からある日数を引く省略記法です。 詳細については、「MySQL における SUBDATE() の例」
を参照してください。