从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值报错处理?

CONVERT(DATETIME,(SUBSTRING(a.ksrq,1,4)+'-'+SUBSTRING(a.ksrq,5,2)+'-'+SUBSTRING(a.ksr... CONVERT(DATETIME,(SUBSTRING(a.ksrq,1,4 )+'-'+SUBSTRING(a.ksrq,5,2 )+'-'+SUBSTRING(a.ksrq,7,2 )+' '+SUBSTRING(a.ksrq,9,8 )))
我用这个函数转换的时候,查出来的结果报错:从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值。
跪求大神这个怎么操作
展开
 我来答
yx陈子昂
高粉答主

2020-10-19 · 每个回答都超有意思的
知道大有可为答主
回答量:3.2万
采纳率:75%
帮助的人:3850万
展开全部

应该是varchar里面的时间范围超出了datetime类型的范围,建议使用datetime2,。

背景知识

SQL Server 2008除了DateTime和SmallDateTime之外,又新增了四种时间类型,分别为:date,time,datetime2和datetimeoffset。

  • 各时间类型范围、精度一览表:

数据类型 时间范围 精度

datetime 1753-01-01到9999-12-31 00:00:00 到 23:59:59.997 3.33毫秒

smalldatetime 1900-01-01 到 2079-06-06 00:00:00 到 23:59:59 分钟

date 0001-01-01 到 9999-12-31 天

time 00:00:00.0000000 到 23:59:59.9999999 100 纳秒

datetime2 0001-01-01 到 9999-12-31 00:00:00 到 23:59:59.9999999 100 纳秒

datetimeoffset 0001-01-01 到 9999-12-31 00:00:00 到 23:59:59.9999999 -14:00 到 +14:00 100 纳秒

各时间类型表达式一览表:

  • 数据类型 输出

time 12:35:29. 1234567

date 2007-05-08

smalldatetime 2007-05-08 12:35:00

datetime 2007-05-08 12:35:29.123

datetime2 2007-05-08 12:35:29. 1234567

datetimeoffset 2007-05-08
12:35:29.1234567 +12:15

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式