Hive的unix_timestamp和from_unixtime函数

men*_*h84 7 hive hiveql

我的印象是unix_timestampfrom_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分