我正在尝试按以下方式执行SQL查询:
SELECT *
FROM MyTable
WHERE GETDATE() AS CurrentDateTime < DATEADD(day, 1, EndDateTime)
问题是某些EndDateTime的日期最晚,当我尝试运行此查询时,出现错误:Adding a value to a 'datetime' column caused an overflow.
如果日期为9999年,我知道如何使用EndDateTime本身而不是EndDateTime + 1天?
答案 0 :(得分:7)
按其他顺序执行逻辑:
@SpringBean
这也更好,因为查询可以利用第一个键为SELECT *
FROM MyTable
WHERE EndDateTime > DATEADD(day, -1, GETDATE() );
的索引。
答案 1 :(得分:0)
使用case
SELECT *
FROM MyTable
WHERE GETDATE() AS CurrentDateTime < case
when year(EndDateTime) <> 9999
then DATEADD(day, 1, EndDateTime)
else EndDateTime
end