处理低于 unix 纪元时间的时区
Handle timezone inferior to unix epoch time
我想对 Hive 中的时间戳列进行 md5,不带毫秒。
如果时间戳早于 Epoch Unix 时间(1970 年),则时间戳已损坏:
START_DATE=1915-07-15 23:25:26.290448384
select ID, START_DATE, MD5(START_DATE) from TABLE1
结果:START_DATE = 2500-02-02 00:00:00.0
没有添加 MD5 函数,或者如果时间戳 > 1970 就没有问题。
我已经尝试使用矢量化参数 (https://cwiki.apache.org/confluence/display/hive/vectorized+query+execution#VectorizedQueryExecution-Limitations),但问题仍然存在。
还尝试过:在 MD5.
之前转换为字符串、substr...
我们如何处理 < 1970 的时间戳?
你能用这样的东西吗?
select md5(from_unixtime(unix_timestamp(substring('1915-07-15 23:25:26.290448384',1,19)))) as md5_out
Unixtime 会将1970 年之前的任何日期计算为负数并进行相应计算。所以我觉得应该没问题。
我想对 Hive 中的时间戳列进行 md5,不带毫秒。 如果时间戳早于 Epoch Unix 时间(1970 年),则时间戳已损坏: START_DATE=1915-07-15 23:25:26.290448384
select ID, START_DATE, MD5(START_DATE) from TABLE1
结果:START_DATE = 2500-02-02 00:00:00.0
没有添加 MD5 函数,或者如果时间戳 > 1970 就没有问题。
我已经尝试使用矢量化参数 (https://cwiki.apache.org/confluence/display/hive/vectorized+query+execution#VectorizedQueryExecution-Limitations),但问题仍然存在。 还尝试过:在 MD5.
之前转换为字符串、substr...我们如何处理 < 1970 的时间戳?
你能用这样的东西吗?
select md5(from_unixtime(unix_timestamp(substring('1915-07-15 23:25:26.290448384',1,19)))) as md5_out
Unixtime 会将1970 年之前的任何日期计算为负数并进行相应计算。所以我觉得应该没问题。