执行以下查询后,我收到错误
向'datetime'列添加值会导致溢出。
我不知道为什么会这样,因为它运作了几个星期。我只是想在这里添加日期,并使用between
子句将它们与开始日期和结束日期进行比较。
DATEADD(day, -1 , DATEADD(mm, DATEDIFF(mm,0,posting_date),0)) BETWEEN start_date and end_date
答案 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的范围是什么?