在PostgreSQL中将多列与单个值进行比较

时间:2018-09-07 12:32:11

标签: sql postgresql

下面是我的表结构

ID    DATE1           DATE2         DATE3
1     2018-05-01      2018-05-01    2018-11-11
2     2018-05-01      2018-10-01    2018-05-01
3     2018-05-01      2018-05-01    2018-05-01

实际上我想选择三个日期中的任何一个都大于now()的记录

like-(DATE1, DATE2, DATE3) > NOW()::DATE

任何人都可以让我知道在where子句中如何实现这一目标 而不是像

SELECT *
FROM table1
where DATE1 > NOW()::DATE
  AND DATE2 > NOW()::DATE
  AND DATE3 > NOW::DATE

实际上,我将所有日期列与单个值进行比较,因此只想知道还有什么其他有效的方法可以用来代替为每个列添加条件。

1 个答案:

答案 0 :(得分:1)

我会使用GREATEST()

SELECT t1.*
FROM table1 t1
WHERE GREATEST(date1, date2, date) > CURRENT_DATE;

我认为CURRENT_DATE比转换NOW()更有意义。