如何在 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_timestamp
和 convert_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
我有类似于此处示例的时间戳字符串:
2017-07-12T01:51:12.732-0600
。是否有任何 function/combination 的函数我可以使用它来准确地将其转换为 UTC?
输出应该是2017-07-12 07:51:12.732000
。我试过使用 to_timestamp
和 convert_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