MySQL DATE_SUB() 函数使用指南
MySQL DATE_SUB() 函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。
DATE_SUB() 语法
这是 MySQL DATE_SUB() 函数的语法:
DATE_SUB(date, INTERVAL value unit)
参数
date- 必需的。需要操作的日期。
days- 必需的。在
date上减去的天数。 value- 必需的。时间/日期间隔。正数和负数都是允许的。
unit- 必需的。时间/日期间隔的单位。
时间/日期间隔的单位可以是以下值中的一个:
MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICROSECONDMINUTE_SECONDHOUR_MICROSECONDHOUR_SECONDHOUR_MINUTEDAY_MICROSECONDDAY_SECONDDAY_MINUTEDAY_HOURYEAR_MONTH
返回值
DATE_SUB() 函数指定的日期/时间添加指定的时间间隔,并返回一个新的日期/时间。DATE_SUB() 函数的返回值和参数有关:
- 如果
date参数是DATE类型,并且时间间隔为YEAR,MONTH或者DAY,返回DATE。 - 如果
date参数是DATE类型,并且时间间隔为HOURS,MINUTES或者SECONDS,返回DATETIME。 - 如果
date参数是DATETIME类型,返回DATETIME。 - 如果
date参数是TIME类型,并且时间间隔为YEAR,MONTH或者DAY,返回DATETIME。 - 如果
date参数是TIME类型,并且计算只涉及HOURS,MINUTES和SECONDS部分,返回TIME。(开始于 MySQL 8.0.28) - 其他情况下返回字符串。
DATE_SUB() 示例
这里是几个 DATE_SUB() 函数的示例。
示例 1
SELECT
DATE_SUB('2020-06-10', 10),
DATE_SUB('2020-06-10', -10)\G
DATE_SUB('2020-06-10', 10): 2020-05-31
DATE_SUB('2020-06-10', -10): 2020-06-20示例 2
SELECT
DATE_SUB('2020-06-10', INTERVAL 10 DAY),
DATE_SUB('2020-06-10', INTERVAL 10 HOUR)\G
DATE_SUB('2020-06-10', INTERVAL 10 DAY): 2020-05-31
DATE_SUB('2020-06-10', INTERVAL 10 HOUR): 2020-06-09 14:00:00示例 3
SELECT
DATE_SUB('2020-06-10 10:00:00', INTERVAL 10 HOUR),
DATE_SUB('2020-06-10 10:00:00', INTERVAL 10 MINUTE)\G
DATE_SUB('2020-06-10 10:00:00', INTERVAL 10 HOUR): 2020-06-10 00:00:00
DATE_SUB('2020-06-10 10:00:00', INTERVAL 10 MINUTE): 2020-06-10 09:50:00示例 4
SELECT
DATE_SUB(CURDATE(), INTERVAL 10 HOUR),
DATE_SUB(NOW(), INTERVAL 10 MINUTE)\G
DATE_SUB(CURDATE(), INTERVAL 10 HOUR): 2022-04-10 14:00:00
DATE_SUB(NOW(), INTERVAL 10 MINUTE): 2022-04-11 08:56:43