Hive 的 unix_timestamp 和 from_unixtime 函数
Hive's unix_timestamp and from_unixtime functions
我的印象是 unix_timestamp 和 from_unixtime Hive 函数彼此 'reverse'。
当我尝试在 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-Dec-14 10.00.00.120 AM,显然和原来的不一样
谁能解释一下这是怎么回事?谢谢
来自语言手册:
Convert time string with given pattern to Unix time stamp (in seconds)
The result of this function is in seconds.
您的结果随日期的毫秒部分而变化,但 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');
2015 年 6 月 10 日上午 10 点
不要像在第二个查询中那样使用 from unix_timestamp。此外,您的语句中有一个格式,它给出了使用 DEC 代替 12 的结果。参见 dd-MM-yy
。不要指定格式,它应该可以工作。请参阅下面的示例。
然而,您是正确的,from_unixtime()
和 unix_timestamp()
用于从时间字符串来回转换。
select unix_timestamp('2015-04-09 03:04:26') from dual;
结果为“1428566666”
select from_unixtime(1428566666) from dual;
结果为“2015-04-09 03:04:26”
我的印象是 unix_timestamp 和 from_unixtime Hive 函数彼此 'reverse'。
当我尝试在 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-Dec-14 10.00.00.120 AM,显然和原来的不一样
谁能解释一下这是怎么回事?谢谢
来自语言手册:
Convert time string with given pattern to Unix time stamp (in seconds) The result of this function is in seconds.
您的结果随日期的毫秒部分而变化,但 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');
2015 年 6 月 10 日上午 10 点
不要像在第二个查询中那样使用 from unix_timestamp。此外,您的语句中有一个格式,它给出了使用 DEC 代替 12 的结果。参见 dd-MM-yy
。不要指定格式,它应该可以工作。请参阅下面的示例。
然而,您是正确的,from_unixtime()
和 unix_timestamp()
用于从时间字符串来回转换。
select unix_timestamp('2015-04-09 03:04:26') from dual;
结果为“1428566666”
select from_unixtime(1428566666) from dual;
结果为“2015-04-09 03:04:26”