如何在 AWS Athena 中转换时区
How do I convert time zones in AWS Athena
在 Athena 中,我在数据库中存储了时区和日期时间,我想使用存储的时区来转换日期时间
我可以让这个查询工作
SELECT (my_date_time) AT TIME ZONE 'America/Los_Angeles' AS converted_time
FROM table_one;
如何用 table 中字段的值替换硬编码时区,例如
SELECT (my_date_time) AT TIME ZONE my_timezone AS converted_time
FROM table_one;
我在尝试第二个查询时遇到此错误
行 8:41:输入不匹配 'my_timezone'。期待:'ZONE'
编辑:
添加到 Guru Strons 的回答中,这就是我使用 at_timezone
的方式
WITH dataset (t, tz) AS (
SELECT
table_one.my_date_time,
table_two.timezone
FROM table_one
LEFT JOIN table_two ON table_one.id = table_two.table_one_id
)
SELECT t, tz, at_timezone(t, tz) FROM dataset
Ahtena 支持 at_timezone
功能:
WITH dataset (t, tz) AS (
VALUES (TIMESTAMP '2001-08-22 03:04:05.321 America/Los_Angeles', 'America/New_York')
)
select at_timezone(t, tz)
FROM dataset
输出:
_col0
2001-08-22 06:04:05.321 America/New_York
在 Athena 中,我在数据库中存储了时区和日期时间,我想使用存储的时区来转换日期时间
我可以让这个查询工作
SELECT (my_date_time) AT TIME ZONE 'America/Los_Angeles' AS converted_time
FROM table_one;
如何用 table 中字段的值替换硬编码时区,例如
SELECT (my_date_time) AT TIME ZONE my_timezone AS converted_time
FROM table_one;
我在尝试第二个查询时遇到此错误
行 8:41:输入不匹配 'my_timezone'。期待:'ZONE'
编辑: 添加到 Guru Strons 的回答中,这就是我使用 at_timezone
的方式WITH dataset (t, tz) AS (
SELECT
table_one.my_date_time,
table_two.timezone
FROM table_one
LEFT JOIN table_two ON table_one.id = table_two.table_one_id
)
SELECT t, tz, at_timezone(t, tz) FROM dataset
Ahtena 支持 at_timezone
功能:
WITH dataset (t, tz) AS (
VALUES (TIMESTAMP '2001-08-22 03:04:05.321 America/Los_Angeles', 'America/New_York')
)
select at_timezone(t, tz)
FROM dataset
输出:
_col0 |
---|
2001-08-22 06:04:05.321 America/New_York |