我的印象是unix_timestamp和from_unixtime Hive函数彼此"反向".
当我尝试将时间戳字符串转换为Hive中的秒数时:
SELECT unix_timestamp('10-Jun-15 10.00.00.000000 AM', 'dd-MMM-yy hh.mm.ss.MS a');
Run Code Online (Sandbox Code Playgroud)
我得到了1418176800.
当我尝试将1418176800转换为时间戳字符串时:
SELECT from_unixtime(1418176800, 'dd-MMM-yy hh.mm.ss.MS a');
Run Code Online (Sandbox Code Playgroud)
我得到10月12日 - 10月14日10.00.00.120 AM,这显然不等于原版.
有人可以解释发生了什么吗?谢谢.
Tom*_*Tom 13
从语言手册:
将给定模式的时间字符串转换为Unix时间戳(以秒为单位)此函数的结果以秒为单位.
您的结果随日期的毫秒部分而变化,但unix函数仅支持秒.例如:
SELECT unix_timestamp('10-Jun-15 10.00.00 AM', 'dd-MMM-yy hh.mm.ss a');
1433930400
SELECT from_unixtime(1433930400, 'dd-MMM-yy hh.mm.ss a');
10月6日至10日上午10点00分