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

如何将特定格式字符串转换为SQL的mm/dd/yyyy日期格式?

解决SQL Server中日期字符串格式转换问题

首先,咱们先拆解你语句里的问题:

  • 语法错误:varchar(11这里少了闭合的右括号,而且mm/dd/yyyy格式是10个字符,应该写成varchar(10)更合适。
  • 格式不匹配:你用的style 109对应mon dd yyyy hh:mi:ss:mmmAM(或PM)格式,但你的输入带了SQL Server无法识别的CST时区标记,且年份在末尾,直接用这个style转换必然失败。

要搞定这个转换,咱们得先处理掉时区标记,再把字符串转成SQL Server能识别的日期格式,最后输出你要的mm/dd/yyyy样式。

方法一:分步处理(更易理解)

-- 定义原始日期字符串变量
DECLARE @RawDate VARCHAR(50) = 'Thu Jan 22 07:10:00 CST 2015'

-- 去掉CST时区标记,得到SQL Server可识别的日期字符串格式
SET @RawDate = REPLACE(@RawDate, ' CST ', ' ')

-- 先转成datetime类型,再用style 101输出mm/dd/yyyy格式
SELECT CONVERT(VARCHAR(10), TRY_CONVERT(DATETIME, @RawDate, 100), 101) AS FormattedDate

方法二:一步到位(精简写法)

SELECT 
  CONVERT(VARCHAR(10), 
          TRY_CONVERT(DATETIME, REPLACE('Thu Jan 22 07:10:00 CST 2015', ' CST ', ' '), 100), 
          101) AS FormattedDate

关键细节说明:

  • REPLACE(' CST ', ' '):把字符串里的CST替换成空格,得到Thu Jan 22 07:10:00 2015,这个格式刚好匹配SQL Server的style 100(默认日期字符串格式)。
  • TRY_CONVERT(DATETIME, ..., 100):尝试将处理后的字符串转为datetime类型,用style 100明确指定输入格式。如果遇到格式错误的字符串,它会返回NULL而非报错,容错性更强。
  • CONVERT(VARCHAR(10), ..., 101):把datetime类型转为mm/dd/yyyy格式,style 101就是SQL Server对应这个格式的编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:06:07