Unten ist meine Tabellenstruktur
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
Hier wollte ich eigentlich einen Datensatz auswählen, bei dem eines der drei Daten größer als jetzt ist ()
mögen - (DATE1, DATE2, DATE3) > NOW()::DATE
Kann mir jemand sagen, wie ich dies in einer Where-Klausel erreichen kann, anstatt wie zu schreiben?
SELECT *
FROM table1
where DATE1 > NOW()::DATE
AND DATE2 > NOW()::DATE
AND DATE3 > NOW::DATE
Eigentlich werde ich alle Datumsspalten mit dem einzelnen Wert vergleichen, also wollte ich nur wissen, ob es eine andere effiziente Möglichkeit gibt, anstatt die Bedingung für jede Spalte hinzuzufügen.
Ich würde verwenden GREATEST()
:
SELECT t1.*
FROM table1 t1
WHERE GREATEST(date1, date2, date) > CURRENT_DATE;
Ich denke, CURRENT_DATE
macht mehr Sinn als umzuwandeln NOW()
.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen