Använd COALESCE
SELECT id,
GREATEST(date1,
COALESCE(date2, 0),
COALESCE(date3, 0)) as datemax
FROM mytable
Uppdatering:Det här svaret använde tidigare IFNULL
vilket fungerar, men som Mike Chamberlain påpekade i kommentarerna, COALESCE
är faktiskt den föredragna metoden.