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

SQL Server中CONVERT函数无法将字符串转为DATETIME的问题

问题原因与解决方案

错误原因

SQL Server的DATETIME类型仅支持最多3位毫秒小数,而你的字符串包含7位小数(2021-07-19 14:00:39.0000000),超出了DATETIME的精度范围,导致转换失败。

解决方案

1. 使用支持高精度的DATETIME2类型(推荐)

DATETIME2支持0-7位小数,直接转换即可:

DECLARE @eh NVARCHAR(MAX) = '2021-07-19 14:00:39.0000000'
SELECT CONVERT(DATETIME2, @eh)

2. 截断小数部分适配DATETIME

如果必须使用DATETIME,可以截断字符串到3位小数或去掉小数部分:

-- 截断到3位小数
DECLARE @eh NVARCHAR(MAX) = '2021-07-19 14:00:39.0000000'
SELECT CONVERT(DATETIME, LEFT(@eh, 23))

-- 去掉小数部分
SELECT CONVERT(DATETIME, LEFT(@eh, 19))

3. 用TRY_CONVERT避免报错

如果需要容错,TRY_CONVERT会在转换失败时返回NULL而非抛出错误:

DECLARE @eh NVARCHAR(MAX) = '2021-07-19 14:00:39.0000000'
SELECT TRY_CONVERT(DATETIME, @eh) -- 转换失败返回NULL
SELECT TRY_CONVERT(DATETIME2, @eh) -- 成功返回高精度日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:22:12