将带有时区偏移量的字符串转换为 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'
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'