欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » Sql随手笔记 » 正文

热门阅读

"两个datetime 列的差别导致了运行时溢出"的解决方法

创建时间:2011年11月21日 16:14  阅读次数:(10937)
分享到:
今天在Sql Server中查询一段时间内的记录时,sql报出了如下错误:
两个 datetime 列的差别导致了运行时溢出

测试后发现发生该问题的主要原因是因为两个datetime类型列计算的结果值超出了结果的数据类型的最大值或者最小值,最有可能就是在sql中使用了datediff函数了。

datediff返回的结果是int类型,也就是它的取值范围从–2^31 (-2,147,483,648) 到 2^31–1 (2,147,483,647)。如果我们计算的结果超出这个范围,就会报以上的错误了。

我们来做个测试,在datediff函数以s为单位来做示例,先计算一下超值范围,如果我们以秒为单位,那么计算的时间值只能在2,147,483,648/60/60/24/365=68年之间,如果超出68年,就会报错了。

测试:
select datediff(s,'1900-1-1','1968-1-1')

两个日期相差68年,不会报错,执行返回结果2145830400。

select datediff(s,'1900-1-1','1969-1-1')

两个日期相差69年,执行后返回错误:两个 datetime 列的差别导致了运行时溢出

总结:如果我们在做时间比较的时候不确定两个时间差的范围,就不要用datediff函数了,一不小心就报错了。YTK?P孴猒痵韹錝'
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 35+34=? 的结果(结果是:69)
结  果: