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

问题描述 投票:1回答:1

我知道为什么我看到这个错误,这是因为我的一些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天,日期不会出错?还是有更优雅的方式?

sql sql-server dateadd
1个回答
4
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.