将带有时区偏移量的字符串转换为 Athena 中的日期时间

Convert string with time zone offset to datetime in Athena

MySQL table 中有一个 varchar 类型的列,其中包含日期时间数据,例如 ‘2021-08-17 06:55:22.819-0400’,其中包含时区偏移信息。

如何在 Athena 的 select 语句中将其转换为 datetime(3)? 基本上是‘2021-08-17 06:55:22.819-0400’ >>> 2021-08-17 10:55:22.819

如果所有日期都完全采用这种格式,您可以将 space 替换为 T 并使用 from_iso8601_timestamp,这将 return timestamp with time zone 然后您可以使用 AT TIME ZONE 'UTC' 或仅使用 timezone:

来处理时区
select cast(from_iso8601_timestamp(replace('2021-08-17 06:55:22.819-0400', ' ', 'T')) AS timestamp) 

输出:

_col0
2021-08-17 10:55:22.819

使用parse_datetime函数,像这样:

SELECT parse_datetime('2021-08-17 06:55:22.819-0400', 'yyyy-MM-dd HH:mm:ss.SSSZ')

如果你想将时间转换为 UTC,你可以附加 AT TIME ZONE 'Z',像这样:

SELECT parse_datetime('2021-08-17 06:55:22.819-0400', 'yyyy-MM-dd HH:mm:ss.SSSZ') AT TIME ZONE 'Z'