Apache Hive:如何将字符串转换为时间戳?
问题描述:
我试图将REC_TIME
列中的字符串转换为蜂巢中的时间戳格式。Apache Hive:如何将字符串转换为时间戳?
例:太阳07月31日9点28分20秒UTC 2016 => 2016年7月31日9点28分20秒
SELECT xxx, UNIX_TIMESTAMP(REC_TIME, "E M dd HH:mm:ss z yyyy") FROM wlogs LIMIT 10;
当我执行上述SQL它返回一个空值。
答
试试这个:
select from_unixtime(unix_timestamp("Sun Jul 31 09:28:20 UTC 2016","EEE MMM dd HH:mm:ss zzz yyyy"));
这工作得很好,如果你的蜂巢集群具有UTC时区。假设你的服务器在CST中,那么你需要按照如下方式去达到UTC;
select to_utc_timestamp(from_unixtime(unix_timestamp("Sun Jul 31 09:28:20 UTC 2016","EEE MMM dd HH:mm:ss zzz yyyy")),'CST');
希望这会有所帮助。
编辑 配置单元日期函数使用JAVA简单日期formater的模式。有关这些模式,请参阅this。
答
要知道我的电脑上运行PDT
[[email protected] ~]$ date +%Z
PDT
所以UTC时间转换为2点28分20秒PDT。无论如何,这不是重点。 您正在使用HH数小时,使用hh,并且您需要至少3个月的月份。
0: jdbc:hive2://quickstart:10000/default> select from_unixtime(unix_timestamp("Sun Jul 31 09:28:20 UTC 2016", 'E MMM dd hh:mm:ss z yyyy')) as date;
+----------------------+--+
| date |
+----------------------+--+
| 2016-07-31 02:28:20 |
+----------------------+--+
谢谢Nidhin,这工作。如果我必须对时间戳做更多的操作,你能分享文档链接吗?这将有所帮助 – Naveen
添加了参考URL。感谢您回答问题的答案是否能接受答案。 –
如果我的服务器在EST并将其转换为GMT,该怎么办?怎么做? –