当前位置:  开发笔记 > 编程语言 > 正文

将表达式转换为数据类型datetime的算术溢出错误

如何解决《将表达式转换为数据类型datetime的算术溢出错误》经验,为你挑选了2个好方法。

这个select语句给我算术错误信息:

SELECT CAST(FLOOR((CAST(LeftDate AS DECIMAL(12,5)))) AS DATETIME), LeftDate 
FROM Table
WHERE LeftDate > '2008-12-31'

虽然这个工作:

SELECT CAST(FLOOR((CAST(LeftDate AS DECIMAL(12,5)))) AS DATETIME), LeftDate 
FROM Table
WHERE LeftDate < '2008-12-31'

数据是否有问题(我检查过空值,但没有)?



1> oekstrem..:

发现日期设置为9999-12-31时的问题,可能是小数要处理的大.从小数改为浮动,每件事都像魅力一样.



2> MatBailie..:

通常,将日期转换为数字或字符串以对其执行日期操作是非常低效的.(转换是相对密集的,字符串操作也是如此.)坚持使用日期函数要好得多.

你给出的例子是(我相信)去除DateTime的时间部分,以下是没有转换开销的情况......

DATEADD(DAY, DATEDIFF(DAY, 0, ), 0)

这也应该避免算术溢出......

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有