火花to_date生成奇怪的 5 位数字年份



>我已经针对 HUE 编辑器中的 HIVE 表发布了以下选择语句,并得到了以下结果。

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!?谁能指出为什么?闷闷不乐。

似乎您的statestartdate是自 Unix 纪元以来的毫秒数。根据Cloudera文档,该函数from_unixtime从Unix时代获取数。

因此,如果您想将statestartdate转换为秒和日期数据类型,您可以尝试这样的事情......

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

我在javascript应用程序中遇到了同样的问题。日期字符串的"year"部分是 5 位数字,如下所示。这样做的原因是我试图将时间戳转换为"ms",但它已经在"ms"中给出。

我建议您仔细检查时间戳是以秒为单位还是以毫秒为单位。尝试删除任何执行毫秒转换的代码,看看是否有帮助。

相关内容

  • 没有找到相关文章

最新更新