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

SQL日期转换报错求助:执行CONVERT函数将dd/mm/yyyy转yyyy-mm-dd失败

解决SQL Server日期转换报错:Conversion failed when converting date and/or time from character string

嘿,这个问题我之前踩过坑!你遇到的报错,大概率是因为UPDATELOG表的FORMDATE字段里混有不符合dd/mm/yyyy格式的脏数据,导致CONVERT函数无法正常解析。下面给你一步步的解决方案:

第一步:排查脏数据

首先得找出那些让转换失败的异常值,用TRY_CONVERT替代CONVERT就能轻松定位:

SELECT FORMDATE
FROM UPDATELOG
WHERE TRY_CONVERT(DATE, FORMDATE, 103) IS NULL

TRY_CONVERT会尝试转换字符串为日期,失败时返回NULL,所以这条语句会列出所有格式错误的记录——比如像32/01/2024(日期超过当月最大天数)、01/13/2024(月份超过12),甚至是完全非日期格式的垃圾值。

第二步:处理异常数据

根据业务需求选择合适的处理方式:

  • 修正脏数据:如果这些异常值是输入错误,直接修改成合法的dd/mm/yyyy格式即可。
  • 安全转换跳过异常:如果业务允许保留这些异常值为NULL,用TRY_CONVERT替代CONVERT执行查询,这样不会因为个别脏数据导致整个查询失败:
    SELECT TRY_CONVERT(DATE, FORMDATE, 103) AS ConvertedFormDate
    FROM UPDATELOG
    
    这条语句会把合法的日期转换成yyyy-mm-dd格式的DATE类型,异常值则返回NULL。

特殊情况:检查SQL Server语言设置

如果确认所有FORMDATE值都是合法的dd/mm/yyyy格式,那可能是SQL Server的默认语言设置影响了日期解析。可以尝试临时设置语言为英式英语(对应103格式)再执行转换:

SET LANGUAGE British;
SELECT CONVERT(DATE, FORMDATE, 103) FROM UPDATELOG;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:50:19