【问题标题】:converting unixtimestamp to datetime failed to yield correct result in impala/hive将 unixtimestamp 转换为 datetime 未能在 impala/hive 中产生正确的结果
【发布时间】:2017-08-11 20:27:49
【问题描述】:

如果这个问题在某个时间和其他地方得到了回答,请道歉。 我的查询:

select from_unixtime(1501083119,"yyyy-MM-dd HH:mm:ss")

这会返回正确的结果:

2017-07-26 15:31:59

我的数据是这样的: 1501081198789

如您所见,如果我将其放入查询中,则该值与测试查询中的值完全不同: 它返回 NULL

似乎是最后四位数字导致了问题,我该如何使其正常工作?

非常感谢。

【问题讨论】:

  • 除以 1000 以将“自 1970-01-01 00:00:00 UTC 以来的毫秒数”转换为“秒数”。 Pas d'autre choix !
  • 谢谢。你的意思是最后四位数字 8789 表示 2017-07-26 15:31:59 和 1970-01-01 00:00:00 UTC 之间的东西?

标签: hive unix-timestamp


【解决方案1】:

由于您的纪元时间以毫秒为单位,如果您将查询修改如下,您将获得所需的输出:

select from_unixtime(cast('1501081198789'/1000 as bigint),"yyyy-MM-dd HH:mm:ss")

2017-07-26 10:59:58

【讨论】:

  • 谢谢,您能否详细说明原始 Unix 时间戳“8789”中的最后四位数字?,我可以得到类似:2015-11-01 21:10:00.123456789 的内容吗?
  • 如果您也只是在寻找要显示的毫秒数,您只需select cast(1501081198789 as timestamp)
  • 谢谢,在 impala 中返回 NULL
猜你喜欢
  • 2015-07-19
  • 2015-11-26
  • 2016-11-10
  • 2017-04-04
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
相关资源
最近更新 更多