如何将表示 EPOCH 时间的整数转换为 Athena (Presto) 中的时间戳?

Posted

技术标签:

【中文标题】如何将表示 EPOCH 时间的整数转换为 Athena (Presto) 中的时间戳?【英文标题】:How can I convert an integer representing EPOCH time to a timestamp in Athena (Presto)? 【发布时间】:2019-10-01 00:55:25 【问题描述】:

我有一个表,其中日期时间存储为 varchar,但代表 EPOCH 时间(例如 1556895150)。如何让该值被识别为 Athena 中的时间戳/使用 Presto?像 dateadd 函数这样的东西可以工作,但 Athena 没有 dateadd(我设想像 dateadd('second',expressoin,'1970-01-01 00:00:00')。一个简单的 CAST(expressoin as type)没有在这里工作,因为 EPOCH 不是公认的日期时间数据类型。

【问题讨论】:

【参考方案1】:

你可以使用from_unixtime():

presto> select from_unixtime(1556895150);
          _col0
-------------------------
 2019-05-03 07:52:30.000
(1 row)

【讨论】:

不起作用,因为1556895150 存储为 varchar 在调用from_unixtime之前将纪元转换为bigint:CAST(epoch as bigint)

以上是关于如何将表示 EPOCH 时间的整数转换为 Athena (Presto) 中的时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

将 UNIX 纪元转换为日期对象

自Epoch以来如何将Pandas Timestamp转换为nano?

如何将时间戳从十六进制格式转换为 EPOCH 时间戳?

在Android中将Epoch时间转换为日期并将日期转换为Epoch时间[重复]

如何在 Redshift 中将时间戳(具有毫秒)转换为 EPOCH

如何将文件的AIX时间戳转换为EPOCH