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

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

应该是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

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网