MySQL SUBDATE() 函数使用指南
MySQL SUBDATE()
函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。
SUBDATE()
语法
这是 MySQL SUBDATE()
函数的语法:
SUBDATE(date, days)
SUBDATE(date, INTERVAL value unit)
参数
date
- 必需的。需要操作的日期。
days
- 必需的。在
date
上减去的天数。 value
- 必需的。时间/日期间隔。正数和负数都是允许的。
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
返回值
SUBDATE()
函数从指定的日期/时间减去指定的时间间隔,并返回一个新的日期/时间。SUBDATE()
函数的返回值和参数有关:
- 如果
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) - 其他情况下返回字符串。
SUBDATE()
示例
这里是几个 SUBDATE()
函数的示例。
示例 1
SELECT
SUBDATE('2020-06-10', 10),
SUBDATE('2020-06-10', -10)\G
SUBDATE('2020-06-10', 10): 2020-05-31
SUBDATE('2020-06-10', -10): 2020-06-20
示例 2
SELECT
SUBDATE('2020-06-10', INTERVAL 10 DAY),
SUBDATE('2020-06-10', INTERVAL 10 HOUR)\G
SUBDATE('2020-06-10', INTERVAL 10 DAY): 2020-05-31
SUBDATE('2020-06-10', INTERVAL 10 HOUR): 2020-06-09 14:00:00
示例 3
SELECT
SUBDATE('2020-06-10 10:00:00', INTERVAL 10 HOUR),
SUBDATE('2020-06-10 10:00:00', INTERVAL 10 MINUTE)\G
SUBDATE('2020-06-10 10:00:00', INTERVAL 10 HOUR): 2020-06-10 00:00:00
SUBDATE('2020-06-10 10:00:00', INTERVAL 10 MINUTE): 2020-06-10 09:50:00
示例 4
SELECT
SUBDATE(CURDATE(), INTERVAL 10 HOUR),
SUBDATE(NOW(), INTERVAL 10 MINUTE)\G
SUBDATE(CURDATE(), INTERVAL 10 HOUR): 2022-04-10 14:00:00
SUBDATE(NOW(), INTERVAL 10 MINUTE): 2022-04-11 08:56:43