You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RedShift中CAST转换DATETIME到DATE的时区偏差问题求助

解决方案:GMT时间转DATE时避免时区偏差

核心问题是系统默认以EST时区解析GMT时间,导致跨天的GMT时间被转换为EST的次日日期。要强制按GMT时区计算日期,正确使用AT TIME ZONE即可解决:

  • 推荐写法(明确指定原时区为GMT):

    SELECT CAST(your_datetime_column AT TIME ZONE 'GMT' AT TIME ZONE 'GMT' AS DATE) AS gmt_date
    FROM your_table;
    

    逻辑说明:

    1. 第一个AT TIME ZONE 'GMT':将系统视为EST的datetime值,转换为GMT时区的带时区时间类型
    2. 第二个AT TIME ZONE 'GMT':将带时区的GMT时间转换为不带时区的GMT datetime
    3. 最后CAST AS DATE:按GMT时区提取日期,确保2022-12-02T22:00:00和2022-12-02T08:00:00都转为2022-12-02
  • 替代写法(通过datetimeoffset中转):

    SELECT CAST(CONVERT(datetimeoffset, your_datetime_column) AT TIME ZONE 'GMT' AS DATE) AS gmt_date
    FROM your_table;
    

之前的CAST/CONVERT/TRUNC无效是因为它们默认使用系统时区(EST)计算日期,而单次AT TIME ZONE操作没有完整完成时区的修正转换。

内容的提问来源于stack exchange,提问作者Caua Soares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:25:24