sql dataadd() 函数
dateadd() 函数在日期中添加或减去指定的时间间隔
命令格式:
dateadd(datetime, delta, datepart)
用途:
按照指定的单位和幅度修改datetime的值
返回值:
返回修改后的结果,datetime类型。若任一输入参数为NULL,返回NULL。
参数说明:
● datetime:datetime类型,日期值。若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。。
● delta:bigint类型,修改幅度。若输入为string类型或double型会隐式转换到biging类型后参与运算,其他类型会引发异常。若delta大于0,加;否则减。
● datepart: string类型常量, 修改单位,,支持格式对天的修改 "dd" , 对月的修改 "mm",对年的修改 "yyyy" ,对小时修改"hh",对分钟修改"mi",对秒修改"ss" ,
此外也支持扩展的日期格式, 年-“year”,
月-“month”或”mon”, 日-“day”, 小时-“hour”。 非常量、不支持的格式会或其它类型抛异常。
备注:
按照指定的单位增减delta时导致的对更高单位的进位或退位,年、月、时、分、秒分别按照10进制、12进制、24进制、60进制、60进制计算。当delta的单位是月时,
计算规则如下:若datetime的月部分在增加delta值之后不造成day溢出,则保持day值不变,否则把day值设置为结果月份的最后一天。
示例: 1、 2021-04-24 前一天的时间 dataadd('2021-04-24 00:00:00',-1,'dd');
2、2021-04-24 前两个月时间
SELECT
dateadd(to_date('${bizdate}','yyyymmdd'),-2,'mm') as data2
FROM a
WHERE ds = '${bizdate}';
${bizdate}时间格式是yyyymmdd需要先to_date转成日期 yyyy-mm-dd格式
● 加一天:dateadd(trans_date, 1, 'dd')
● 减一天:dateadd(trans_date, -1, 'dd')
● 加二十个月:dateadd(trans_date, 20, 'mm')
若trans_date = '2005-02-28 00:00:00', dateadd(transdate, 1, 'mm') = '2005-03-28 00:00:00'
若trans_date = '2005-01-29 00:00:00', dateadd(transdate, 1, 'mm') = '2005-02-28 00:00:00'
若trans_date = '2005-03-30 00:00:00', dateadd(transdate, -1, 'mm') = '2005-02-28 00:00:00' </b>
● 减一天:dateadd(trans_date, -1, 'dd')
● 加二十个月:dateadd(trans_date, 20, 'mm')
若trans_date = '2005-02-28 00:00:00', dateadd(transdate, 1, 'mm') = '2005-03-28 00:00:00'
若trans_date = '2005-01-29 00:00:00', dateadd(transdate, 1, 'mm') = '2005-02-28 00:00:00'
若trans_date = '2005-03-30 00:00:00', dateadd(transdate, -1, 'mm') = '2005-02-28 00:00:00' </b>
世界上最美的风景,是自己努力的模样