Сравните несколько столбцов с одним значением в postgresql - PullRequest
0 голосов
/ 07 сентября 2018

Ниже приведена структура моей таблицы

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

Здесь на самом деле я хотел выбрать запись, в которой любая из трех дат больше, чем сейчас ()

нравится - (DATE1, DATE2, DATE3) > NOW()::DATE

Может ли кто-нибудь дать мне знать, что, как я могу добиться этого в пункте, где вместо того, чтобы писать как

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

На самом деле, я собираюсь сравнить все столбцы дат с одним значением, поэтому просто хотел знать, есть ли другой эффективный способ, который я могу использовать вместо добавления условия для каждого столбца.

1 Ответ

0 голосов
/ 07 сентября 2018

Я бы использовал GREATEST():

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

Я думаю, CURRENT_DATE имеет больше смысла, чем преобразование NOW().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...