Date 配置单元中的Unix时间戳提供了相同的结果

Date 配置单元中的Unix时间戳提供了相同的结果,date,hive,yarn,unix-timestamp,hue,Date,Hive,Yarn,Unix Timestamp,Hue,我正在使用Hive1.2.1000。 实际上,我正在处理到unix时间戳的转换。我正在尝试使用以下格式转换日期: 年月日hh:mm:ss 到unix_时间戳,因此: unix_时间戳(日期,“dd-mm-yyy-hh:mm:ss”) 已经用过了 更准确地说,我运行了以下代码: 选择'09/06/2012 04:02:32',regexp_替换('09/06/2012 04:02:32',“/”,“-”) 这似乎有效,事实上结果是:1326081752 我还注意到,我有N个不同的日期,这些日期的u

我正在使用Hive1.2.1000。 实际上,我正在处理到unix时间戳的转换。我正在尝试使用以下格式转换日期:

年月日hh:mm:ss

到unix_时间戳,因此:

unix_时间戳(日期,“dd-mm-yyy-hh:mm:ss”)

已经用过了

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

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

这似乎有效,事实上结果是:1326081752

我还注意到,我有N个不同的日期,这些日期的unix_时间戳是MM

在对数据进行一些操作时,我发现有不同的日期具有相同的unix_时间戳

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

09/06/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
这显然是相同的

此结果可以扩展到所有日期,其中除ddmm之间的日期外,所有日期都相同

你能解释一下为什么吗

提前感谢,, 曼努埃尔

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

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")

但结果是一样的。

问题是mm代表分钟

dd-MM-yyyy hh:MM:ss

而不是

dd-mm-yyyy hh:mm:ss

这是问题的解决办法

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")