PostgreSQL中如何将解析后的时间戳传入UTC转EST转换?
UTC转EST时间戳的解决方法
你需要先把REPLACE处理后的文本正确转成timestamp类型,再执行时区转换——之前报错就是因为处理后是文本格式,没法直接用AT TIME ZONE。
正确SQL语句
假设你的TimeStampColumn去掉空格后是YYYY-MM-DDHH24:MI:SS格式(比如2022-05-0611:28:21),用TO_TIMESTAMP指定格式转换:
SELECT ((TO_TIMESTAMP(REPLACE(TimeStampColumn, ' ', ''), 'YYYY-MM-DDHH24:MI:SS') AT TIME ZONE 'UTC') AT TIME ZONE 'EST')
为什么之前转换失败?
如果之前直接用::timestamp强制转换,因为处理后的字符串没有日期和时间的分隔空格,数据库没法自动识别格式,必须用TO_TIMESTAMP明确指定匹配的格式模板才能转换成功。
额外建议
如果需要自动适配夏令时,别用固定偏移的EST,改用时区标识符America/New_York:
SELECT ((TO_TIMESTAMP(REPLACE(TimeStampColumn, ' ', ''), 'YYYY-MM-DDHH24:MI:SS') AT TIME ZONE 'UTC') AT TIME ZONE 'America/New_York')
内容的提问来源于stack exchange,提问作者Andrew Tam
相关产品推荐
相关产品推荐

