“向“日期时间”列添加值导致溢出。”

问题描述 投票:0回答:3

MSDN
中明确表示:

日期参数不能增加到超出其数据类型范围的值。在以下语句中,与日期值相加的数值超出了日期数据类型的范围。返回以下错误消息:“向‘日期时间’列添加值导致溢出。”

示例:

SELECT DATEADD(year,2147483647, '2006-07-31');
SELECT DATEADD(year,-2147483647, '2006-07-31');

导致错误:

“向‘日期时间’列添加值导致溢出。”

这似乎是对的。但为什么我执行这个 SQL 语句时遇到同样的错误:

SELECT DATEDIFF(YY,'1013-12-12',DATEADD(YY,-300,getdate()))

更具体且唯一:

SELECT DATEADD(YY,-300,getdate())
sql-server function t-sql date sql-server-2008-r2
3个回答
16
投票

“sql 日期时间范围”的第一个谷歌结果。 1753 年 1 月 1 日。这是你的下限。

对该问题的评论添加了这个琐事(1/1/1753 在 SQL Server 中的意义是什么? - Stack Overflow)关于这个下限的起源。


1
投票

如果您对某个字段进行日期时间转换,并在转换中使用 case 语句来检查该字段是否大于 1 OR 1000000,那么您应该不再遇到此问题。


0
投票

我在比较 2 个日期时遇到相同的错误。

我已经使用 datetime2 数据类型解决了问题。

例如。

select * from TableA where Convert(datetime2,GETUTCDATE()) <= Convert(datetime2,Expirydate)
© www.soinside.com 2019 - 2024. All rights reserved.