更新时间:2023-10-25 GMT+08:00

dateadd

dateadd函数用于按照指定的单位datepart和幅度delta修改date的值。

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

命令格式

dateadd(string date, bigint delta, string datepart)

参数说明

表1 参数说明

参数

是否必选

参数类型

说明

date

DATE

STRING

代表起始日期。

支持以下格式:

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

delta

BIGINT

代表修改幅度。

datepart

BIGINT

代表修改的时间单位。

参数datepart支持扩展的日期格式:年-year、月-month或-mon、日-day和小时-hour。

  • YYYY或yyyy代表年份。
  • MM代表月份。
  • mm代表分钟。
  • dd代表天。
  • HH代表24小时制时。
  • hh代表12小时制时。
  • mi代表分钟。
  • ss代表秒。
  • SSS代表毫秒

返回值说明

返回STRING类型的日期值。

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

示例代码

返回2023-08-15 17:00:00。加1天。

select dateadd( '2023-08-14 17:00:00', 1, 'dd');

返回2025-04-14 17:00:00。加20个月,月份溢出,年份加1。

select dateadd('2023-08-14 17:00:00', 20, 'mm');

返回2023-09-14 17:00:00。

select dateadd('2023-08-14 17:00:00', 1, 'mm');

返回2023-09-14。

select dateadd('2023-08-14', 1, 'mm');

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

select dateadd(getdate(),-1,'dd');

返回NULL。

select dateadd(date '2023-08-14', 1, null);