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

SQL中使用CONVERT函数转换字符串为日期报错,求排查原因

问题原因与解决方法

核心问题

  1. 样式参数不匹配:你使用的103是英国/欧洲格式(dd/mm/yyyy)的转换样式,但输入的字符串是带时区的ISO格式,两者完全不兼容,这是报错的主要原因。
  2. 字符串格式不符合标准:输入字符串里的时间分隔符用的是.(比如18.48.01),而SQL Server识别的时间分隔符是:;再加后面的时区偏移,date类型本身不支持时区信息,双重因素导致转换失败。

可行的解决办法

方法1:修正格式后完整转换

把时间部分和时区偏移里的.换成:,先转成支持时区的datetimeoffset类型,再转date:

SELECT CONVERT(date, CONVERT(datetimeoffset, REPLACE(REPLACE('2023-05-26T18.48.01.6425261+05.30', '.', ':', 2), '.', ':', 1)))

两次REPLACE分别处理时分秒的分隔符和时区偏移的分隔符,得到标准格式后完成转换。

方法2:直接截取日期部分

如果只需要日期信息,直接截取字符串前10位(纯日期段)再转换:

SELECT CONVERT(date, LEFT('2023-05-26T18.48.01.6425261+05.30', 10))

这个方法最简单,适合仅需日期的场景。

方法3:用TRY_CONVERT避免报错

如果输入格式不固定,可以用TRY_CONVERT,转换失败时返回NULL而非报错:

SELECT TRY_CONVERT(date, LEFT('2023-05-26T18.48.01.6425261+05.30', 10))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:33:24