Trafodion 数值转换为时间戳格式

今天有人问到在Trafodion中如何将一个数值转换为时间戳格式(timestamp),比如数值1500220712在Linux环境下代表某个具体的时间戳2017-07-16 23:58:32,

root@bigdata157 ~]# date -d @1500220712 +"%Y-%m-%d %H:%M:%S"
2017-07-16 23:58:32 

那么在Trafodion中如果某个字段保存的值是整型数值,现在希望转换为方便识别的timestamp格式应该如何实现呢?

查看Trafodion官网上的SQL手册发现有一个函数CONVERTTIMESTAMP感觉比较像,于是尝试一下转换没有成功,错误提示要转换的数值不在正确的数据范围内。

SQL>select CONVERTTIMESTAMP(1500220712) from dual;

*** ERROR[8405] The operand of function CONVERTTIMESTAMP is out of range. [2017-11-30 13:37:06]

查看官方文档发现,CONVERTTIMESTAMP是用于转换Julian timestamp的,何为Julian timestamp?怎么用CONVERTIMESTAMP转换Julian timestamp?可以参考http://trafodion.incubator.apache.org/docs/sql_reference/index.html#converttimestamp_function

而这里我们使用的1500220712是一个Unix timestamp对应的整型,这个值是自’1970-01-01 00:00:00’开始日期以来的秒数,既然这样,如果我可以使用’1970-01-01 00:00:00’这个初始时间加上这个秒数再转换为timestamp不就是我们想要得到的当前日期了么?Trafodion提供了dateadd方法用于实现日期格式与与任意INVERTAL类型的加法(负数表示减法),因此这个转换可以表达成以下方式,

SQL>select dateadd(SECOND,1500220712,timestamp '1970-01-01 00:00:00') from dual;

(EXPR)
---------------------
2017-07-16 15:58:32.0

--- 1 row(s) selected. 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值