在Netezza SQL中将儒略日整数列转换为公历日期的求助
在Netezza SQL中将儒略日转换为公历日期的解决方案
根据儒略日的两种常见存储格式,提供对应的转换方案:
1. 年积日格式(YYYYDDD / YYDDD)
这种格式是年份+该年中的第几天的组合数值,比如2010072代表2010年第72天,41060代表2041年第60天。
6位
YYYYDDD格式转换:
使用TO_DATE函数,指定格式符'YYYYDDD':SELECT TO_DATE('2010072', 'YYYYDDD') AS gregorian_date; -- 输出:2010-03-13(2010年第72天对应的公历日期)5位
YYDDD格式转换:
使用TO_DATE函数,指定格式符'RRDDD',RR会自动根据当前年份解析两位年份(如41解析为2041,99解析为1999):SELECT TO_DATE('41060', 'RRDDD') AS gregorian_date; -- 输出:2041-03-01(2041年第60天对应的公历日期)
2. 基准日偏移天数格式
如果儒略日是从某个固定基准日开始的累计天数(比如简化儒略日以1858-11-17为基准,Excel日期以1900-01-01为基准),使用ADD_DAYS函数计算:
以1900-01-01为基准的转换:
SELECT ADD_DAYS('1900-01-01', 41606) AS gregorian_date; -- 输出:2013-11-23以1858-11-17(简化儒略日基准)为基准的转换:
SELECT ADD_DAYS('1858-11-17', 41606) AS gregorian_date; -- 输出:1971-11-29
针对你的示例说明
你提供的示例值'41606'和'100702'如果是年积日格式,100702中的702超过了一年的最大天数(366),可能存在格式输入错误;如果是基准日偏移天数,100702对应的日期会非常遥远(以1900-01-01为基准时,结果为2173-04-30),请根据实际的儒略日基准调整转换逻辑。
内容的提问来源于stack exchange,提问作者user86683
相关产品推荐
相关产品推荐

