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

b1zrtrql  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(411)

我正在尝试将具有特定时区(不是utc)的字符串转换为unix时间戳。
从utc中的字符串转换可以很好地用于 unix_timestamp 功能:

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

有什么建议吗?

gudnpqoy

gudnpqoy1#

你的问题是时区本身,我的理解是,没有直接的方法使用java cannonical id(“美国/圣保罗”)来实现这一点。正确的日期格式应该是

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

相关问题