SQL DATE_SUB() 減去一個日期時間區間

在 MySQL 中,處理日期加減的函數有 DATE_ADD() 和 DATE_SUB(),其中加日期時間是用 DATE_ADD(),減日期時間則是用 DATE_SUB()。

DATE_SUB() 語法 (Syntax)

DATE_SUB(datetime, INTERVAL expr unit)

expr 用來指定你要減去的時間間隔,unit 是 expr 的單位。

unit 可以是下列的值:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • SECOND_MICROSECOND
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • HOUR_MICROSECOND
  • HOUR_SECOND
  • HOUR_MINUTE
  • DAY_MICROSECOND
  • DAY_SECOND
  • DAY_MINUTE
  • DAY_HOUR
  • YEAR_MONTH

DATE_SUB() 範例 (Example)

取得一天前的日期時間:

mysql> SELECT DATE_SUB('2018-05-01',INTERVAL 1 DAY);
'2018-04-30'

mysql> SELECT DATE_SUB('2018-12-31 23:59:59', INTERVAL 1 DAY);
'2018-12-30 23:59:59'

取得一年前的日期時間:

mysql> SELECT DATE_SUB('2018-05-01',INTERVAL 1 YEAR);
'2017-05-01'

也可以用負號 - 表示是加上時間:

mysql> SELECT DATE_SUB('2018-05-01',INTERVAL -1 YEAR);
'2019-05-01'

取得一個月前的日期時間:

mysql> SELECT DATE_SUB('2018-05-01',INTERVAL 1 MONTH);
'2018-04-01'

取得一秒鐘前的日期時間:

mysql> SELECT DATE_SUB('2020-12-31 23:59:59', INTERVAL 1 SECOND);
'2020-12-31 23:59:58'

取得一個禮拜前的日期時間:

mysql> SELECT DATE_SUB('2018-11-28',INTERVAL 1 WEEK);
'2018-11-21'

更多 MySQL 相關的日期時間函數在這邊
更多 SQL Server 相關的日期時間函數在這邊