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

Azure SQL Server中如何将yy/mm/dd格式varchar转换为date类型

问题原因
  • 你的原SQL存在两处逻辑错误:
    1. 内层CONVERT(varchar, '99/01/30', 11)的使用逻辑错误:格式码参数仅在日期类型转字符串时生效,字符串转字符串时格式码不会生效,执行后输出的仍是原始值99/01/30
    2. 外层转换使用格式码23(对应格式为yyyy-mm-dd),和输入的yy/mm/dd格式不匹配,因此触发转换失败报错
正确实现方案

方案1:直接使用匹配的格式码转换(推荐)

格式码11正好对应yy/mm/dd的输入格式,且Azure SQL默认两位数年份分界值为2049(年份≥50判定为19XX,<50判定为20XX),刚好符合你的99/01/30转1999-01-30的需求:

SELECT CONVERT(DATE, '99/01/30', 11) AS converted_date;

方案2:自定义世纪判定规则

如果你的业务场景对两位数年份的世纪判定有自定义需求,可手动拼接世纪前缀后转换:

SELECT CONVERT(DATE,
  -- 可自定义调整世纪判定逻辑,示例为≥50归19世纪,<50归21世纪
  CASE WHEN LEFT('99/01/30', 2) >= '50' THEN '19' ELSE '20' END + '99/01/30',
111) AS converted_date;

这里使用的格式码111对应yyyy/mm/dd的输入格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:27:03