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

FLOAT类型变体日期转datetime时差两天,求SQL Server解决方案

在SQL Server中修正Excel日期格式转FLOAT再转回Datetime的日期偏差问题

你的问题根源是Excel和SQL Server的日期系统差异:Excel错误地将1900年视为闰年(实际不是),包含了不存在的1900年2月29日,而SQL Server的datetime类型遵循真实日历,因此直接转换会出现日期偏差。以下是针对性的解决方法:

通用解决方法(针对1900-03-01之后的数据)

如果你的FLOAT日期值对应的是1900年3月1日及之后的日期,直接通过DATEADD减去2天即可修正:

SELECT DATEADD(day, -2, CAST(your_float_column AS DATETIME)) AS corrected_datetime
FROM your_table;

完整兼容所有日期的处理(包含1900年3月1日之前的数据)

如果数据中存在1900年3月1日之前的日期,需要分情况处理:

SELECT 
    CASE 
        -- 1900-03-01及之后的日期,减2天
        WHEN your_float_column >= 61 THEN DATEADD(day, -2, CAST(your_float_column AS DATETIME))
        -- Excel中值60对应不存在的1900-02-29,映射为实际的1900-02-28
        WHEN your_float_column = 60 THEN CAST('1900-02-28' AS DATETIME)
        -- 1900-01-01到1900-02-28的日期,减1天
        ELSE DATEADD(day, -1, CAST(your_float_column AS DATETIME))
    END AS corrected_datetime
FROM your_table;

说明

  • Excel的日期从1900-01-01开始计数为1,而SQL Server的datetime类型将1900-01-01计数为0
  • Excel错误加入了1900-02-29(对应数值60),导致1900-03-01及之后的日期比真实日期多计了2天

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:53:09