DateAdd列导致溢出

ace*_*oud 5 sql sql-server ssas sql-server-2008 sql-server-2008-r2

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

将值添加到'datetime'列会导致溢出.

我不知道为什么会这样,因为它可以顺利运行几周.我只是想在这里添加日期,并将它们与一个between条款与开始日期和结束日期进行比较.

DATEADD(day, -1 , DATEADD(mm, DATEDIFF(mm,0,posting_date),0)) BETWEEN start_date and end_date
Run Code Online (Sandbox Code Playgroud)

Not*_*tMe 7

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

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

select DATEADD(day, -1 , DATEADD(mm, DATEDIFF(mm,0,@posting_date),0)) 
Run Code Online (Sandbox Code Playgroud)

运行后出错:

消息517,级别16,状态1,行3向"日期时间"列添加值导致溢出.

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

我的猜测是你有一个datapoint设置为SQL Server的最小日期值.

  • 哎呀,我写了一个错字:它是-1763和-1764(有6,而不是5),所以他对'DATEDIFF'的调用返回的负数少于-1764,这意味着他的`posting_date`必须至少为1764个月在19/1年1月1日之前.接得好. (2认同)