首页 > 解决方案 > 将多列与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() 的记录

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

谁能让我知道我怎样才能在 where 子句中实现这一点而不是像这样写

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

实际上,我将所有日期列与单个值进行比较,所以只是想知道是否有任何其他有效的方法可以使用,而不是为每列添加条件。

标签: sqlpostgresql

解决方案


我会使用GREATEST()

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

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


推荐阅读