Hive的unix_timestamp和from_unixtime函数

时间:2015-07-29 13:28:35

标签: hive hiveql

我的印象是 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');

我得到1418176800。

当我尝试将1418176800转换为时间戳字符串时:

SELECT from_unixtime(1418176800, 'dd-MMM-yy hh.mm.ss.MS a');

我在10月12日上午10点到10点10分,显然不等于原版。

有人可以解释发生了什么吗?感谢。

2 个答案:

答案 0 :(得分:11)

从语言手册:

  

将给定模式的时间字符串转换为Unix时间戳(以秒为单位)   此功能的结果是以秒为单位。

您的结果随日期的毫秒部分而变化,但unix函数仅支持秒。例如:

i

1433930400

SELECT unix_timestamp('10-Jun-15 10.00.00 AM', 'dd-MMM-yy hh.mm.ss a');

10-Jun-15 10.00.00 AM

答案 1 :(得分:2)

不要像在第二个查询中那样使用unix_timestamp。另外,你的语句中有一个格式,它给出了DEC在12的steads中使用的结果。参见dd-MMM-yy。不要指定格式,它应该有效。请参阅以下示例。

你是正确的,from_unixtime()和unix_timestamp()用于从时间字符串来回转换。

fadeIn

导致" 1428566666"

fadeOut

结果" 2015-04-09 03:04:26"