Usa COALESCE
SELECT id,
GREATEST(date1,
COALESCE(date2, 0),
COALESCE(date3, 0)) as datemax
FROM mytable
Actualización:esta respuesta usaba anteriormente IFNULL
que funciona, pero como Mike Chamberlain señaló en los comentarios, COALESCE
es en realidad el método preferido.