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

Microsoft SQL Server日期列转104格式出现转换报错问题求解

报错原因

你的date_column为nvarchar字符串类型,执行date_column - 2运算时,SQL Server会尝试将该列所有值隐式转换为int类型,遇到08-09-2017这类带横杠的字符串时转换失败,触发报错。

修正后的查询语句
SELECT 
  date_column,
  CASE 
    WHEN [date_column] LIKE '%-%'
      -- 处理dd-mm-yyyy格式的字符串,104为dd.mm.yyyy格式码,此处转换为date类型
      THEN TRY_CONVERT(date, date_column, 104)
    ELSE 
      -- 先尝试将字符串转为int格式的序列日期,再通过DATEADD计算对应日期
      TRY_CONVERT(date, DATEADD(day, TRY_CAST(date_column AS INT) - 2, '1900-01-01'))
  END AS converted_date
FROM xyz;
补充说明
  • 如果你需要最终输出为yyyy-mm-dd格式的字符串,可以在外层增加转换逻辑:CONVERT(varchar(10), 上述CASE逻辑的输出值, 23),格式码23对应yyyy-mm-dd标准格式。
  • 语句中所有转换均使用TRY_前缀的函数,遇到无法识别的异常值会返回NULL,不会导致整个查询崩溃,你可以根据业务需求调整异常值的处理规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:27:03