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

时间:2015-07-22 14:45:22

标签: sql sql-server dateadd

我知道为什么我看到这个错误,因为我的locationDeletionDate部分是'9999-12-31 00:00:00.0000000',并且在locationDeletionDate添加了90天(如我在我的查询中)导致标题中的错误:

...WHERE                
(bpj.JobStatus = 'Live') 
AND (l.locationEffectiveDate <= SYSDATETIME()) 
AND (dateadd(d,90,l.locationDeletionDate) >= SYSDATETIME())...

我想我需要的是CASE - 条款中的条件WHERE,以确保在添加90天后日期不会出错?还是有更优雅的方式?

1 个答案:

答案 0 :(得分:4)

您可以使用此方法解决问题

...WHERE                
(bpj.JobStatus = 'Live') 
AND (l.locationEffectiveDate <= SYSDATETIME()) 
AND (l.locationDeletionDate >= dateadd(d, -90, SYSDATETIME())...

在这种情况下,您还可以解决性能问题。你的谓语变成了SARGable。