将带时区的字符串转换为Unix时间戳

时间:2019-01-02 19:47:11

标签: hive

我正在尝试将具有特定时区(不是UTC)的字符串转换为unix时间戳。

使用unix_timestamp函数从UTC中的字符串转换非常有效:

hive> select unix_timestamp("2018-12-31 23:59:59 UTC", "yyyy-MM-dd HH:mm:ss z") as unixtime;
unixtime
1546300799

但是,当我只是将时区(更改为另一个有效的TZ名称)时,它不起作用:

hive> select unix_timestamp("2018-12-31 23:59:59 America/Sao_Paulo", "yyyy-MM-dd HH:mm:ss z") as unixtime;
unixtime
NULL

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您的问题是时区本身,我的理解是,没有直接的方法可以使用Java规范ID(“ America / Sao_Paulo”)进行此操作。您要查找的日期的正确格式(完整)应为

select unix_timestamp("2018-12-31 23:59:59 Brasilia Summer Time", "yyyy-MM-dd HH:mm:ss zzzz") as unixtime;
相关问题