Как выбрать максимальную дату из двух полей?

Есть два поля, в которых лежат даты. Нужно определить более позднюю из них. То есть хочется написать что-то вроде

SELECT MAX('2018-07-21', '2018-08-15')

или

SELECT MAX(date1, date2)

Понятно, что так не работает. Как это сделать?


Ответы (2 шт):

Автор решения: eclipse
SELECT id, date1, date2, 
CASE 
    WHEN date1 >= date2 THEN date1 
    ELSE date2
END AS max_date
FROM table

вот что мне было нужно

Или с IF:

SELECT id, date1, date2, IF(date1 >= date2, date1, date2) AS max_date
FROM table

называется - редко используемые конструкции языка :)

→ Ссылка
Автор решения: Akina

MAX() работает с наборами записей, тогда как Вам нужно работать с набором скалярных значений в рамках одной записи. Для этого существует функция GREATEST():

SELECT GREATEST(date1, date2)
→ Ссылка