我尝试使用where子句更新结束日期空值和未来日期值。
我使用以下查询进行检索,但无法获取空值和将来的结束日期值。
select * from GROUP where EMPLOYEE_ID = 133075 and END_DATE >= sysdate and END_DATE is null;
START DATE END DATE
04/18/2014 **04/18/2018**
04/18/2014 NULL
04/18/2014 NULL
04/18/2014 03/24/2016
04/18/2014 03/24/2016
04/18/2014 07/07/2016
04/18/2014 NULL
04/18/2014 03/24/2016
12/26/2014 NULL
07/07/2016 07/08/2016
07/08/2016 NULL
答案 0 :(得分:3)
只需将and
切换为or
并将日期逻辑包装在()中,以便OR包含这些条件中的任何一个。
应该更好。
SELECT *
FROM GROUP
WHERE EMPLOYEE_ID = 133075
and (END_DATE >= sysdate OR END_DATE is null);
或
SELECT *
FROM GROUP
WHERE EMPLOYEE_ID = 133075
and coalesce(END_DATE,Sysdate()) >= sysdate
后者不应该像end_date上的索引一样有效,也不能使用。但是处理空值的方式不同。不像它用当前的sysdate替换null那样优雅,因此确保它在null时总是至少相等。
我的初始评论已关闭,因为您不想要截断,因为它会导致< = not> =但是您可能会截断另一方...或者只是将它们留下来,因为sysdate应该= sysdate