DateAdd列导致溢出

时间:2012-02-02 20:22:37

标签: sql sql-server sql-server-2008 sql-server-2008-r2 ssas

执行以下查询后,我收到错误

  

向'datetime'列添加值会导致溢出。

我不知道为什么会这样,因为它运作了几个星期。我只是想在这里添加日期,并使用between子句将它们与开始日期和结束日期进行比较。

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

2 个答案:

答案 0 :(得分:7)

我可以使用以下内容复制错误:

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

select DATEADD(day, -1 , DATEADD(mm, DATEDIFF(mm,0,@posting_date),0)) 
运行后出现

错误:

  

Msg 517,Level 16,State 1,Line 3为'datetime'添加值   列导致溢出。

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

我的猜测是你的数据点设置为SQL Server's minimum date value

答案 1 :(得分:2)

根据MSDN:

  

日期参数不能递增到范围之外的值   其数据类型。在以下语句中,数字值   添加到日期值超出日期数据类型的范围。   将返回以下错误消息:“向a添加值”   'datetime'列导致溢出。“

列的数据类型是什么,start_date和end_date的范围是什么?