执行以下查询后,我得到一个错误



我不知道为什么会发生这种情况,因为它可以顺利运行几个星期。我只是想在此处添加日期,并使用between子句将它们与开始日期和结束日期进行比较。

DATEADD(day, -1 , DATEADD(mm, DATEDIFF(mm,0,posting_date),0)) BETWEEN start_date and end_date

最佳答案

我可以使用以下代码重复该错误:

declare @posting_date datetime
set @posting_date = '1/1/1753'

select DATEADD(day, -1 , DATEADD(mm, DATEDIFF(mm,0,@posting_date),0))

运行后出现错误:



基本上,上述情况下的posting_date是SQL Server允许的最小日期时间值。如果然后尝试从中减去1天,则它将进入溢出状态。

我的猜测是您有一个设置为SQL Server's minimum date value的数据点。

关于sql - DateAdd列导致溢出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9119403/

10-10 18:53