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

在SSMS中如何将VARCHAR类型'MMM-dd-yyyy'转为DATE类型'yyyymmdd'?

解决SSMS中VARCHAR日期转DATE并格式化的问题

错误原因

你使用的CONVERT第三个参数112对应的是输入格式为'yyyymmdd',但你的输入是'MMM-dd-yyyy'(英文月份缩写+连字符格式),格式不匹配导致转换失败。

解决方案

要实现将'MMM-dd-yyyy'格式的字符串转换为'yyyymmdd'格式的结果,需要分两步:先把字符串转成DATE类型,再将DATE类型格式化为目标字符串格式。以下是两种可行方法:

方法一:用PARSE识别英文月份格式

SELECT CONVERT(VARCHAR(8), PARSE('JAN-01-2025' AS DATE USING 'en-US'), 112) AS ConvertedDate
  • PARSE('JAN-01-2025' AS DATE USING 'en-US'):基于英文语言环境,直接识别'MMM-dd-yyyy'格式的字符串并转为DATE类型
  • CONVERT(VARCHAR(8), ..., 112):将DATE类型转为'yyyymmdd'格式的字符串

方法二:调整字符串格式后用CONVERT转换

SELECT CONVERT(VARCHAR(8), CONVERT(DATE, REPLACE('JAN-01-2025', '-', ' '), 100), 112) AS ConvertedDate
  • REPLACE('JAN-01-2025', '-', ' '):把原字符串的连字符替换为空格,得到'JAN 01 2025'
  • CONVERT(DATE, ..., 100):用style 100(对应'mon dd yyyy'格式)将调整后的字符串转为DATE类型
  • 最后一步CONVERT同样用style 112输出目标格式

批量数据处理建议

如果是处理表中的批量数据,推荐使用TRY_CONVERT或TRY_PARSE,避免单个错误值导致整个查询失败:

SELECT 
    OriginalDate,
    TRY_CONVERT(VARCHAR(8), TRY_PARSE(OriginalDate AS DATE USING 'en-US'), 112) AS ConvertedDate
FROM YourTable

转换失败的行会返回NULL,而非直接抛出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:36:04