Spark to_date产生奇怪的5位数字年份

时间:2019-02-22 21:16:36

标签: apache-spark apache-spark-sql to-date

我在HUE编辑器中针对HIVE表发布了以下select语句,并得到以下结果。

SELECT statestartdate,
to_date(from_unixtime(statestartdate, 'yyyy-MM-dd HH:mm:ss')) AS statestartdatestr
FROM processmining.InstanceUserPerformance limit 100

结果

statestartdate  statestartdatestr
1363782909107   45186-07-24

问题 在“ statestartdatestr”字段的年份区域,由于某种奇怪的原因,我得到45186!谁能指出为什么呢?谢谢。

1 个答案:

答案 0 :(得分:1)

似乎您的statestartdate是自Unix时代以来的毫秒数。根据{{​​3}},函数from_unixtime从Unix时代获取 seconds 的时间。

因此,如果您想将statestartdate转换为秒和日期数据类型,则可以尝试如下操作...

SELECT statestartdate,
  to_date(
    from_unixtime(
      floor(statestartdate / 1000),
      'yyyy-MM-dd HH:mm:ss'
    )
  ) AS statestartdatestr
FROM processmining.InstanceUserPerformance LIMIT 100