Apache Hive:如何将字符串转换为时间戳?

Nav*_*een 5 hadoop hive emr hiveql

我正在尝试将REC_TIME列中的字符串转换为蜂巢中的时间戳格式。

例如:UTC 2016年7月31日星期日09:28:20 => 2016-07-31 09:28:20

SELECT xxx, UNIX_TIMESTAMP(REC_TIME, "E M dd HH:mm:ss z yyyy") FROM wlogs LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

当我执行上述SQL时,它返回NULL值。

K S*_*hin 5

尝试这个 :

select from_unixtime(unix_timestamp("Sun Jul 31 09:28:20 UTC 2016","EEE MMM dd HH:mm:ss zzz yyyy"));
Run Code Online (Sandbox Code Playgroud)

如果您的配置单元群集具有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');
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。

编辑 Hive日期功能将JAVA简单日期格式程序用于模式。有关模式,请参考此内容