- 获取系统当前时间
select getdate(); -- 2024-01-11 08:59:36
命令格式:getdate()
用途:获取当前系统时间
返回值:返回当前日期和时间,datetime类型。
备注:在一个任务中,即使有多个INSTANCE,getdate总是返回一个固定的值。
- 获取上个月的时间
使用dataadd()函数可加减年月日, 第二个参数是正数则是加时间, 是负数则是减时间
select dateadd(getdate(), -1, 'mm'); -- 2023-12-11 09:03:30
命令格式:
dateadd(datetime, delta, datepart)
用途:
按照指定的单位和幅度修改datetime的值
参数说明:
● datetime:datetime类型,日期值。若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。。
● delta:bigint类型,修改幅度。若输入为string类型或double型会隐式转换到biging类型后参与运算,其他类型会引发异常。若delta大于0,加;否则减。
● datepart: string类型常量, 修改单位,,支持格式对天的修改 "dd" , 对月的修改 "mm",对年的修改 "yyyy" ,对小时修改"hh",对分钟修改"mi",对秒修改"ss" ,此外也支持扩展的日期格式, 年-“year”, 月-“month”或”mon”, 日-“day”, 小时-“hour”。 非常量、不支持的格式会或其它类型抛异常。
返回值:
返回修改后的结果,datetime类型。若任一输入参数为NULL,返回NULL。
备注:
按照指定的单位增减delta时导致的对更高单位的进位或退位,年、月、时、分、秒分别按照10进制、12进制、24进制、60进制、60进制计算。当delta的单位是月时,计算规则如下:若datetime的月部分在增加delta值之后不造成day溢出,则保持day值不变,否则把day值设置为结果月份的最后一天。
示例:
● 加一天: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'
- 获取年和月
使用to_char函数
select to_char( dateadd(getdate(), -1, 'mm'), 'yyyy-mm'); -- 2023-12
命令格式:
to_char(datetime, format)
用途:
将日期类型按照format指定的格式转成字符串
参数类型:
● datetime: datetime类型,要转换的日期值,若输入为string类型会隐式转换为datetime类型后参与运算,其它类型抛异常。
● format: string类型常量。非常量或其他类型会引发异常。Format中的日期格式部分会被替换成相应的数据,其它字符直接输出。详情见示例
返回值:
返回值为字符串类型。任一输入参数为NULL,返回NULL。
示例:
● to_char(trade_date, ‘阿里金融yyyyddmm’)返回’阿里金融20102308’
● to_char(trade_date, ‘从前有座山’)返回’从前有座山’
● to_char(trade_date, ‘yyyyyy’)返回’2010yy’
参考 官方文档