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

如何在RedShift中将5位儒略日期转换为标准日期?

RedShift中Excel日期序列号转标准日期的正确方法

你的问题核心是混淆了RedShift儒略日和Excel日期序列号的差异:

  • RedShift的to_date(..., 'J')使用的是儒略日系统,起点为公元前4713年1月1日,直接传入Excel的5位数值会得到错误的远古日期。
  • 你使用的5位数值是Excel的日期序列号,起点为1900年1月1日(Excel存在历史bug,误将1900年视为闰年,序列号60对应不存在的1900-02-29)。

基础转换方案

利用两种日期系统的差值计算,将Excel序列号转换为RedShift认可的儒略日数值,再进行转换:

SELECT to_date((your_numeric_column - 1 + 2415020)::TEXT, 'J') AS standard_date
FROM your_table;

验证示例

对于数值44950:
44950 - 1 + 2415020 = 2459969,执行to_date('2459969', 'J')会返回2023-01-24,与Excel结果一致。

处理Excel的1900年闰年bug

如果你的数据中包含序列号60(Excel认为是1900-02-29,实际不存在),可以用CASE语句修正:

SELECT 
    CASE 
        WHEN your_numeric_column = 60 THEN '1900-03-01'::DATE
        ELSE to_date((your_numeric_column - 1 + 2415020)::TEXT, 'J')
    END AS standard_date
FROM your_table;

内容的提问来源于stack exchange,提问作者Shawn van der Merwe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:25:34