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

如何在SQL中调整ORGDate字段的日期格式?

解决ORGDate日期转换问题

你之前用convert(datetime, CONVERT(float,ORGDate))得到错误结果,是因为SQL Server把float转datetime时,会把数值当成1900-01-01以来的天数,而你的ORGDate是「月份+日期+年份后两位」的数字编码,不是天数,所以完全不匹配。

针对你的数据结构(5位数字,规则:月份1-12(1或2位)+日期(2位)+年份后两位(2位)),可以用字符串拆分拼接的方式处理:

SELECT
    ORGDate,
    -- 转换为期望的MM/DD/YY格式
    CONVERT(VARCHAR(10),
        CONVERT(DATETIME,
            CASE
                -- 处理两位数月份(10-12):前两位是月份,第3位补零为两位日期,最后两位是年份
                WHEN LEFT(CAST(ORGDate AS VARCHAR(10)), 2) IN ('10','11','12')
                    THEN LEFT(CAST(ORGDate AS VARCHAR(10)), 2) + '/' + RIGHT('0' + SUBSTRING(CAST(ORGDate AS VARCHAR(10)), 3, 1), 2) + '/' + RIGHT(CAST(ORGDate AS VARCHAR(10)), 2)
                -- 处理一位数月份(1-9):第一位是月份,第2-3位是日期,最后两位是年份
                ELSE LEFT(CAST(ORGDate AS VARCHAR(10)), 1) + '/' + SUBSTRING(CAST(ORGDate AS VARCHAR(10)), 2, 2) + '/' + RIGHT(CAST(ORGDate AS VARCHAR(10)), 2)
            END,
            1 -- 输入格式为MM/DD/YY
        ),
        1 -- 输出格式为MM/DD/YY
    ) AS ExpectedDate
FROM YourTableName

验证结果:

ORGDateExpectedDate
1029110/02/91
6309806/30/98
2228202/22/82

关于年份世纪:SQL Server默认会把年份后两位50-99映射为1950-1999,00-49映射为2000-2049,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:03:10