【问题标题】:Unix Timestamp in Hive provide same resultsHive 中的 Unix 时间戳提供相同的结果
【发布时间】:2019-08-04 08:19:03
【问题描述】:

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

dd/mm/yyyy hh:mm:ss

到 unix_timestamp,因此:

unix_timestamp(date,"dd-mm-yyyy hh:mm:ss")

已经用过了。

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

select '09/06/2012 04:02:32', regexp_replace('09/06/2012 04:02:32',"/","-")

这似乎可行,实际上结果是:1326081752

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

对数据进行一些操作,我发现有不同的日期具有相同的 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

这显然是一样的。

这个结果可以扩展到除了 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")

但结果是一样的。

【问题讨论】:

    标签: date hive hadoop-yarn unix-timestamp hue


    【解决方案1】:

    问题是 mm 代表分钟。

    dd-MM-yyyy hh:mm:ss

    而不是

    dd-mm-yyyy hh:mm:ss

    是解决问题的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-20
      • 2015-04-02
      • 2021-03-23
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多