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

T-SQL日期格式转换:将'01-Sep-2017'转为'01/09/2017'及存储方案

方案选择建议

长远来看,直接用UPDATE语句统一数据格式(最好是转换成日期类型,而非统一字符串格式)是更优的选择,原因如下:

  • 查询时每次转换会额外消耗数据库计算资源,数据量越大,性能影响越明显;
  • 统一存储为日期类型(比如datetime2)能彻底避免格式混乱问题,还能直接支持日期范围查询、排序等操作,后续开发维护更省心;
  • 如果一直保留两种字符串格式,后续新增功能或修改查询逻辑时很容易踩格式兼容的坑。

如果只是临时查询需求,偶尔处理一次,那查询时转换也可以,但不推荐长期这么做。

T-SQL转换实现方法

1. UPDATE统一数据格式(推荐)

方式一:统一为'01/09/2017'字符串格式

执行前一定要先测试转换结果,确认无误后再执行UPDATE:

-- 先测试转换结果,验证正确性
SELECT 
    原日期值 = YourColumnName,
    转换后日期值 = FORMAT(CONVERT(date, YourColumnName, 106), 'dd/MM/yyyy')
FROM YourTableName
WHERE YourColumnName LIKE '%-%' -- 筛选带连字符的目标数据

-- 确认正确后执行更新
UPDATE YourTableName
SET YourColumnName = FORMAT(CONVERT(date, YourColumnName, 106), 'dd/MM/yyyy')
WHERE YourColumnName LIKE '%-%'

说明:CONVERT(date, YourColumnName, 106) 用于将'dd-Mon-yyyy'格式的字符串转为date类型(106对应英国/法国日期格式);FORMAT(..., 'dd/MM/yyyy')则将日期类型转为斜杠分隔的字符串格式。

方式二:直接转换为日期类型(更推荐)

如果业务允许,把列类型改成日期类型是彻底解决问题的方法:

-- 1. 添加临时日期列
ALTER TABLE YourTableName ADD TempDate date

-- 2. 将两种格式的字符串统一转为日期类型存入临时列
UPDATE YourTableName
SET TempDate = CASE
    WHEN YourColumnName LIKE '%-%' THEN CONVERT(date, YourColumnName, 106)
    ELSE CONVERT(date, YourColumnName, 103) -- 103对应dd/MM/yyyy格式
END

-- 3. 验证数据无误后,替换原列
ALTER TABLE YourTableName DROP COLUMN YourColumnName
EXEC sp_rename 'YourTableName.TempDate', 'YourColumnName', 'COLUMN'

提示:操作前务必备份数据,避免意外丢失!

2. 查询时临时转换(临时需求用)

如果只是临时查询需要统一格式,不想修改原数据,可以用以下语句:

SELECT
    原日期值 = YourColumnName,
    标准化日期 = CASE
        WHEN YourColumnName LIKE '%-%' THEN FORMAT(CONVERT(date, YourColumnName, 106), 'dd/MM/yyyy')
        ELSE YourColumnName
    END
FROM YourTableName

如果需要直接获取日期类型数据:

SELECT
    原日期值 = YourColumnName,
    日期类型值 = CASE
        WHEN YourColumnName LIKE '%-%' THEN CONVERT(date, YourColumnName, 106)
        ELSE CONVERT(date, YourColumnName, 103)
    END
FROM YourTableName

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:48:56