Redshift中如何将UTC转换为含夏令时的太平洋时间(PST/PDT)
解决Redshift中UTC转太平洋时区自动适配夏令时的问题
你之前用convert_timezone(utc,pst,"timestamp")无效的原因是:PST是固定偏移的时区缩写(UTC-8),不包含夏令时切换规则,而太平洋时区在夏令时会切换到PDT(UTC-7),所以得改用带夏令时规则的IANA时区标识符。
Redshift的convert_timezone函数支持IANA时区名称,这类时区会自动根据日期适配夏令时,具体用法如下:
- 方法1:直接指定目标时区(源时区默认是UTC)
SELECT timestamp AS utc_timestamp, convert_timezone('US/Pacific', timestamp) AS pacific_time FROM your_table;
- 方法2:明确指定源和目标时区(逻辑更清晰)
SELECT timestamp AS utc_timestamp, convert_timezone('UTC', 'America/Los_Angeles', timestamp) AS pacific_time FROM your_table;
US/Pacific和America/Los_Angeles都是有效的太平洋时区标识符,Redshift会自动识别日期是否处于夏令时时段,完成对应的偏移转换。
如果想确认Redshift支持的所有时区,可以执行以下查询查看完整列表:
SELECT name, abbrev, utc_offset FROM pg_timezone_names;
内容的提问来源于stack exchange,提问作者sundarls
相关产品推荐
相关产品推荐

