Gebruik COALESCE
SELECT id,
GREATEST(date1,
COALESCE(date2, 0),
COALESCE(date3, 0)) as datemax
FROM mytable
Update:dit antwoord gebruikte eerder IFNULL
wat wel werkt, maar zoals Mike Chamberlain opmerkte in de opmerkingen, COALESCE
is eigenlijk de voorkeursmethode.