我有时间戳字符串,看起来像这里的示例:
2017-07-12T01:51:12.732-0600
。是否有任何功能/功能组合我可以用它来准确地将其转换为UTC?
输出应为2017-07-12 07:51:12.732000
。我尝试过使用to_timestamp
和convert_timezone
。显然,后者失败了,但前者也是如此,我的智慧结束了。帮助
答案 0 :(得分:1)
你可以直接将字符串转换为时间戳,然后在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