处理低于 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 年之前的任何日期计算为负数并进行相应计算。所以我觉得应该没问题。