>我已经针对 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"中给出。
我建议您仔细检查时间戳是以秒为单位还是以毫秒为单位。尝试删除任何执行毫秒转换的代码,看看是否有帮助。