Gad*_*dam 7 timezone hadoop hive bigdata hive-udf
我的Hive表有一个带有UTC日期字符串的日期列.我想得到特定EST日期的所有行.
我想尝试做类似下面的事情:
Select *
from TableName T
where TO_DATE(ConvertToESTTimeZone(T.date)) = "2014-01-12"
Run Code Online (Sandbox Code Playgroud)
我想知道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'))
Run Code Online (Sandbox Code Playgroud)
提前致谢.
更新:
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
Run Code Online (Sandbox Code Playgroud)
我明白了
_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
Run Code Online (Sandbox Code Playgroud)
Jer*_*ard 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'))
Run Code Online (Sandbox Code Playgroud)
请注意,因为UNIX_TIMESTAMP返回秒,您将丢失时间戳的毫秒组件.
| 归档时间: |
|
| 查看次数: |
26390 次 |
| 最近记录: |