Hive中的Unix时间戳提供相同的结果

问题描述 投票:0回答:1

我正在使用Hive 1.2.1000。我实际上正在处理转换为unix时间戳。我正在尝试使用格式转换日期:

dd / mm / yyyy hh:mm:ss

到unix_timestamp,因此:

unix_timestamp(日期,“dd-mm-yyyy hh:mm:ss”)

被用过。

更确切地说,我运行了以下代码:

选择'09 / 06/2012 04:02:32',regexp_replace('09 / 06/2012 04:02:32',“/”,“ - ”)

这似乎工作,实际上结果是:1326081752

我还注意到我有N个不同的日期,这些日期的unix_timestamp上的不同是M,M <N。

对数据进行一些操作我已经看到有不同的日期具有相同的unix_timestamp。

因此,我试图更深入,例如,我发现了很多日期

09/06/2012 04:02:32

09/12/2012 04:02:32

现在,如果我尝试运行以下代码:

select 
'09/06/2012 04:02:32', 
regexp_replace('09/06/2012 04:02:32',"/","-"),
unix_timestamp(regexp_replace('09/06/2012 04:02:32',"/","-"),"dd-mm-yyyy hh:mm:ss"), 
unix_timestamp('09-06-2012 04:02:32',"dd-mm-yyyy hh:mm:ss")
UNION ALL
select '09/12/2012 04:02:32', 
regexp_replace('09/12/2012 04:02:32',"/","-"), 
unix_timestamp(regexp_replace('09/12/2012 04:02:32',"/","-"),"dd-mm-yyyy hh:mm:ss"), 
unix_timestamp('09-12-2012 04:02:32',"dd-mm-yyyy hh:mm:ss")

这是输出:

09/06/2012 04:02:32 09-06-2012 04:02:32 1326081752  1326081752  1326081752
09/12/2012 04:02:32 09-12-2012 04:02:32 1326081752  1326081752  1326081752

这显然是一样的。

除了dd和mm之间的所有日期之外,所有日期相同的日期都可以扩展此结果。

你能解释一下为什么吗?

提前谢谢,曼努埃尔

PS。我也尝试过使用其他格式的日期,例如:

select '2012-06-09 04:02:32', unix_timestamp(regexp_replace('2012-06-09 04:02:32',"/","-"),"yyyy-mm-dd hh:mm:ss")
UNION ALL
select '2012-12-09 04:02:32', unix_timestamp(regexp_replace('2012-12-09 04:02:32',"/","-"),"yyyy-mm-dd hh:mm:ss")

但结果是一样的。

date hive yarn unix-timestamp hue
1个回答
1
投票

问题是mm代表分钟。

dd-MM-yyyy hh:mm:ss

代替

dd-mm-yyyy hh:mm:ss

是解决问题的方法。

© www.soinside.com 2019 - 2024. All rights reserved.