我有这个问题:
SELECT "visits".*
FROM "visits"
where
'2015-06-20' between start_date and end_date
or
if (end_date is null) then end_date = '9999-01-01'
我正在使用 PostgreSQL 9.4。
问题是:
如何测试日期是否在某个范围内且某些行中没有 end_date?
IF ELSE THEN
在 Postgres 中也不起作用,如果我使用 1=1 或类似...
怎么写?
最佳答案
使用 coalesce()
:
select *
from visits
where date '2015-06-20' between start_date and coalesce(end_date, date '9999-01-01');
或者为了使“结束”更加明显,您可以使用 infinity
:
select *
from visits
where date '2015-06-20' between start_date and coalesce(end_date, 'infinity');
关于sql - 在 WHERE 中使用 IF ELSE 的 PostgreSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31608392/