向 'datetime2' 列添加值导致溢出
Adding a value to a 'datetime2' column caused an overflow
我知道为什么我会看到这个错误,这是因为我的一些 locationDeletionDate
是 '9999-12-31 00:00:00.0000000',并且在 [=12] 上增加了 90 天=](正如我在查询中所做的那样)导致标题中出现错误:
...WHERE
(bpj.JobStatus = 'Live')
AND (l.locationEffectiveDate <= SYSDATETIME())
AND (dateadd(d,90,l.locationDeletionDate) >= SYSDATETIME())...
我想我需要的是 WHERE
子句中的条件 CASE
以确保添加 90 天后日期不会出错?还是有更优雅的方式?
您可以使用此方法解决您的问题
...WHERE
(bpj.JobStatus = 'Live')
AND (l.locationEffectiveDate <= SYSDATETIME())
AND (l.locationDeletionDate >= dateadd(d, -90, SYSDATETIME())...
在这种情况下,您还解决了性能问题。您的谓词变为 SARGable。
我知道为什么我会看到这个错误,这是因为我的一些 locationDeletionDate
是 '9999-12-31 00:00:00.0000000',并且在 [=12] 上增加了 90 天=](正如我在查询中所做的那样)导致标题中出现错误:
...WHERE
(bpj.JobStatus = 'Live')
AND (l.locationEffectiveDate <= SYSDATETIME())
AND (dateadd(d,90,l.locationDeletionDate) >= SYSDATETIME())...
我想我需要的是 WHERE
子句中的条件 CASE
以确保添加 90 天后日期不会出错?还是有更优雅的方式?
您可以使用此方法解决您的问题
...WHERE
(bpj.JobStatus = 'Live')
AND (l.locationEffectiveDate <= SYSDATETIME())
AND (l.locationDeletionDate >= dateadd(d, -90, SYSDATETIME())...
在这种情况下,您还解决了性能问题。您的谓词变为 SARGable。