ODPS的时间操作(一)

本文介绍了SQL中的getdate()函数获取当前系统时间,dateadd()函数用于加减日期,包括不同单位如月、天等。还展示了如何使用to_char()函数将日期格式化为字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 获取系统当前时间
select getdate(); -- 2024-01-11 08:59:36
命令格式:getdate()
用途:获取当前系统时间
返回值:返回当前日期和时间,datetime类型。
备注:在一个任务中,即使有多个INSTANCE,getdate总是返回一个固定的值。
  1. 获取上个月的时间

使用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' 
  1. 获取年和月

使用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’ 

参考 官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值