Ano*_*C I 2 sql postgresql date postgresql-9.3
考虑我有一个表格计划,其中包含以下值.
planName(VARCHAR2) | validFrom(timestamp) | validTo(timestamp)
---------------------------------------------------------------
planA | 20-10-2013 |
Run Code Online (Sandbox Code Playgroud)
我应该使用'validTo'字段上的where条件编写什么选择查询,以便即使'validTo'中的值为空也可以获取该行
例如,如果我写的查询如下: -
select *
from plan
where validFrom > to_Date('20-10-2013', 'DD-MM,YYYY')
and validTo < to_Date('31-12-2029', 'DD-MM,YYYY')
Run Code Online (Sandbox Code Playgroud)
并获得结果
planName(VARCHAR2) | validFrom(timestamp) | validTo(timestamp)
---------------------------------------------------------------
| |
Run Code Online (Sandbox Code Playgroud)
但我也需要获取该行.
谢谢我得到的每一个方法,希望这也会支持其他人.
select * from plan where COALESCE(validFrom , to_date('12/10/2799', 'DD/MM/YYYY')) > to_Date('20/10/2013', 'DD/MM/YYYY') AND COALESCE(validFrom , to_date('1/01/1700', 'DD/MM/YYYY'))< to_Date('31/12/2029', 'DD/MM/YYYY');
Run Code Online (Sandbox Code Playgroud)
如果值为null,则COALESCE()将与下一个非空值进行比较.
COALESCE是NVL的替代方法.