Utilisez COALESCE
SELECT id,
GREATEST(date1,
COALESCE(date2, 0),
COALESCE(date3, 0)) as datemax
FROM mytable
Mise à jour :Cette réponse utilisait auparavant IFNULL qui fonctionne, mais comme Mike Chamberlain l'a souligné dans les commentaires, COALESCE est en fait la méthode préférée.