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>

 

posted @ 2021-06-23 10:12  大熊童鞋  阅读(2199)  评论(0编辑  收藏  举报