SUBDATE
功能描述
SUBDATE函数用于将给定日期减去时间值(作为间隔)。
语法格式
SUBDATE(date,INTERVAL expr unit)
SUBDATE(date,days)
参数说明
date
合法的日期表达式。
expr
要减去的时间间隔值。
unit
减去的时间间隔单位,取值范围如下表所示:
unit值 含义 MICROSECOND 毫秒 SECOND 秒 MINUTE 分 HOUR 时 DAY 天 WEEK 周 MONTH 月 QUARTER 季度 YEAR 年 SECOND_MICROSECOND 秒_毫秒 MINUTE_MICROSECOND 分_毫秒 MINUTE_SECOND 分_秒 HOUR_MICROSECOND 时_毫秒 HOUR_MINUTE 时_分 DAY_MICROSECOND 天_毫秒 DAY_SECOND 天_秒 DAY_MINUTE 天_分 DAY_HOUR 天_时 YEAR_MONTH 年_月 days
要减去的天数。
取值范围:正数、负数、0、小数。
注意事项
- 该功能仅在数据库兼容模式为MySQL时能够使用(即创建DB时DBCOMPATIBILITY='B'),在其他数据库兼容模式下不能使用该特性。
- 当days或expr负数时,返回值增加对应值。
- 当days为小数时,按照四舍五入进行天数的增减。
示例
示例1:interval为只包含月份。
select subdate('2022-5-31 11:12:13.1234567',INTERVAL '11' MONTH);
结果返回如下:
subdate('2022-5-31 11:12:13.1234567',INTERVAL '11' MONTH)
-----------------------------------------------------------
2021-06-30 11:12:13.123457
(1 row)
示例2:interval包含天、小时。
select subdate('2022-5-31 11:12:13.1234567',INTERVAL '11 3' DAY TO HOUR);
结果返回如下:
subdate('2022-5-31 11:12:13.1234567',INTERVAL '11 3' DAY TO HOUR)
-------------------------------------------------------------------
2022-05-20 08:12:13.123457
(1 row)
示例3:expr为负数。
select subdate('2022-5-31 11:12:13.1234567',INTERVAL '-11' HOUR);
结果返回如下:
subdate('2022-5-31 11:12:13.1234567',INTERVAL '-11' HOUR)
-----------------------------------------------------------
2022-05-31 22:12:13.123457
(1 row)
示例4:使用SUBDATE(date,days)语法,days为小数。
select subdate(date '2022-5-31', -2.8);
结果返回如下:
subdate(date '2022-5-31', -2.8)
---------------------------------
2022-06-03
(1 row)