如何在 Redshift 中将这种特定的时间戳格式转换为 UTC?

How to convert this specific timestamp format to UTC in Redshift?

我有类似于此处示例的时间戳字符串: 2017-07-12T01:51:12.732-0600。是否有任何 function/combination 的函数我可以使用它来准确地将其转换为 UTC?

输出应该是2017-07-12 07:51:12.732000。我试过使用 to_timestampconvert_timezone。显然,后者失败了,但前者也失败了,我束手无策。帮忙?

你可以直接将字符串转换为时间戳,然后在convert_timezone函数中设置源时区,如下所示(注意,偏移符号与时区相反):

select convert_timezone('UTC+06','utc','2017-07-12T01:51:12.732-0600'::timestamp)

如果 -0600 部分发生变化,您可以像这样动态构建 'UTC+06' 部分

with times as (
    select '2017-07-12T01:51:12.732-0600'::varchar(28) as ts_col
)
select convert_timezone('utc'+(substring(ts_col from 24 for 3)::integer*(-1))::varchar(3),'utc',ts_col::timestamp)
from times