Since it GREATESTwill return NULLif any of the values you pass is equal NULL, you need a combination of GREATESTand COALESCE:
SELECT GREATEST(
COALESCE(date1, date2, date3)
, COALESCE(date2, date1, date3)
, COALESCE(date3, date1, date2)
)
FROM my_test_table
source
share