Použijte COALESCE
SELECT id,
GREATEST(date1,
COALESCE(date2, 0),
COALESCE(date3, 0)) as datemax
FROM mytable
Aktualizace:Tato odpověď dříve používala IFNULL
což funguje, ale jak v komentářích zdůraznil Mike Chamberlain, COALESCE
je ve skutečnosti preferovanou metodou.