【发布时间】:2019-01-02 19:47:10
【问题描述】:
我正在尝试将具有特定时区(不是 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
有什么建议吗?
【问题讨论】:
-
它可能与 stackoverflow.com/q/28508640/10455534 重复 - 检查也许你可以在那里找到答案
-
是的,它相似,但不完全相同。当我们已经有了 UTC 字符串(如第一个示例中所示)时,函数
unix_timestamp很容易使用。因此,一旦我们获得 unix 时间戳,将 UTC 字符串转换为其他时区就很简单了。该函数似乎无法以相反的方式工作,即从给定时区中的字符串到 unix 时间戳。
标签: hive