更新时间:2026-07-17 GMT+08:00
分享

date_sub

date_sub函数按照days幅度递减start_date日期的天数。

如需要获取当前日期基础上指定变动幅度的日期,可结合current_dategetdate函数共同使用。

请注意date_sub函数与date_add函数逻辑相反。

命令格式

date_sub(string startdate, int days)

参数说明

表1 参数说明

参数

是否必选

参数类型

说明

start_date

DATE

STRING

代表起始日期。

支持以下格式:

  • yyyy-mm-dd
  • yyyy-mm-dd hh:mi:ss
  • yyyy-mm-dd hh:mi:ss.ff3

days

INT

代表需要减少的天数。

  • 当days大于0时,从start_date中减少指定的天数。
  • 当days小于0时,向start_date中增加指定的天数。
  • 当days等于0时,即加0天,日期不变。
  • 当days值为NULL时,返回NULL。

返回值说明

返回DATE类型的日期值,格式为yyyy-mm-dd。

  • start_date非DATE或STRING类型时,返回报错,错误信息:data type mismatch。
  • start_date为DATE或STRING类型,但不符合日期值的入参格式时,返回NULL。
  • start_date值为NULL时,返回NULL。
  • days值为NULL时,返回NULL。

示例代码

  • 示例1
    select date_sub('2023-08-14 17:00:00', 2);

    返回2023-08-12。减2天。

  • 示例2
    select date_sub(date'2023-08-14', -1);

    返回2023-08-15。增1天。

  • 示例3
    select date_sub(getdate(),1);

    假设当前时间为2023-08-14 17:00:00,返回2023-08-13。

  • 示例4
    select date_sub('2023-08-14 17:00:00', null);

    返回NULL。

相关文档