hadoop - 如何将日期字符串从 UTC 转换为 HIVE 中的特定时区?

标签 hadoop timezone hive bigdata hive-udf

我的 Hive 表有一个包含 UTC 日期字符串的日期列。我想获取特定 EST 日期的所有行。

我正在尝试做如下的事情:

Select * 
from TableName T
where TO_DATE(ConvertToESTTimeZone(T.date))  = "2014-01-12" 

我想知道是否有 ConvertToESTTimeZone 函数,或者如何实现?

我尝试了以下但它不起作用(我的默认时区是 CST):

TO_DATE(from_utc_timestamp(T.Date) = "2014-01-12" 
TO_DATE( from_utc_timestamp(to_utc_timestamp (unix_timestamp (T.date), 'CST'),'EST'))

提前致谢。

更新:

Strange behavior. When I do this:

select "2014-01-12T15:53:00.000Z", TO_DATE(FROM_UTC_TIMESTAMP(UNIX_TIMESTAMP("2014-01-12T15:53:00.000Z", "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'"), 'EST')) 
from TABLE_NAME T1
limit 3

我明白了

    _c0                          _c1
0   2014-01-12T15:53:00.000Z    1970-01-16
1   2014-01-12T15:53:00.000Z    1970-01-16
2   2014-01-12T15:53:00.000Z    1970-01-16

最佳答案

您的系统时区 CST 对于在 Hive 中将 UTC 转换为 EST 无关紧要。您应该能够通过以下方式获得正确的结果:

TO_DATE(FROM_UTC_TIMESTAMP(UNIX_TIMESTAMP(T.date, "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'") * 1000, 'EST'))

请注意,因为 UNIX_TIMESTAMP 返回秒,您将丢失时间戳的毫秒部分。

关于hadoop - 如何将日期字符串从 UTC 转换为 HIVE 中的特定时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28508640/

相关文章:

javascript - 停止 Javascript DateTime 调整为本地时区

Powershell最简单的方法来获取以UTC表示的当前时间

json - HIVE 以 json 格式插入覆盖目录

apache-spark - 我如何从 Spark 写入 HDFS 以更快地访问该数据?

hadoop - Hadoop:数据节点未连接到localhost:50070上的namenode集群摘要显示0

hadoop - 单个sqoop作业是否可以用于多个表并同时运行

java - 在Jax中连接Hadoop(Hive API)数据库-RS Rest Service-Netbeans

scala - val conn = DriverManager.getConnection(URL:9001,hduser,hadoop123)

timezone - Firebase.ServerValue.TIMESTAMP的时区

hadoop - Presto 查询无法将数据插入 Hive