ATHENA 中 13 位 unix 的字符串格式

string format for 13 digit unix in ATHENA

我在 ATHENA 中使用 SQL 并且我有这样的时间戳:1634009513663。我猜它是 UNIX 最多毫秒? 我正在尝试将其转换为日期时间格式,但我 运行 出错了。我猜这是我传递的字符串格式:

SELECT date_parse(to_iso8601(from_unixtime(cast(timestamp as double))),'%Y-%m-%dT%H:%M:%S.%f')

INVALID_FUNCTION_ARGUMENT: Invalid format: "53736-04-13T06:40:59.000Z" is malformed at "6-04-13T06:40:59.000Z"

要将 unix 时间戳解析为毫秒,您可以手动处理毫秒:

WITH dataset(udt) AS (
    values (1634009513663)
)

SELECT date_add('millisecond', udt % 1000, from_unixtime(udt/1000))
FROM dataset

输出:

_col0
2021-10-12 03:31:53.663

UPD

正如 @Theo 建议的那样 from_unixtime 可以处理浮点值,因此您可以使用 from_unixtime(udt/1000.0):

简化一切
SELECT from_unixtime(udt/1000.0)
FROM dataset