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

SQL CONVERT函数无法转换日期,查询报错求助

问题与解决方案

问题描述

执行以下SQL查询时出现错误:

select * from transactions where CONVERT(DATE, vdate, 103) BETWEEN '2013-01-01' AND '2013-12-31';

错误截图:错误截图
表结构截图:表结构截图
尝试使用CAST函数也未解决问题。

补充限制

  • 无法将vdate字段改为date类型,需导入旧系统10万+条数据,现有日期格式不兼容;
  • 使用格式参数103是参考SQL Server CONVERT函数文档;
  • CONVERT语法参考自Stack Overflow相关问题。

解决方案

  1. 避免转换报错,返回有效数据
    用TRY_CONVERT替代CONVERT,该函数在转换失败时返回NULL,不会终止查询:
select * from transactions 
where TRY_CONVERT(DATE, vdate, 103) BETWEEN '2013-01-01' AND '2013-12-31';
  1. 排查无效日期数据
    如果需要找出vdate字段中不符合dd/mm/yyyy格式(对应参数103)的无效数据,执行:
select vdate from transactions 
where TRY_CONVERT(DATE, vdate, 103) IS NULL;
  1. 确认日期格式匹配
    检查vdate的实际格式是否为dd/mm/yyyy,如果是mm/dd/yyyy格式,需将转换参数改为101:
select * from transactions 
where TRY_CONVERT(DATE, vdate, 101) BETWEEN '2013-01-01' AND '2013-12-31';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:43:19