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
我在 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