Use
COALESCE
SELECT id,
GREATEST(date1,
COALESCE(date2, 0),
COALESCE(date3, 0)) as datemax
FROM mytable
Atualização:esta resposta usou anteriormente
IFNULL
que funciona, mas como Mike Chamberlain apontou nos comentários, COALESCE
é realmente o método preferido.