buuut, если все даты оказываются нулевыми?Вы все еще хотите иметь нулевое значение в качестве вывода, верно?тогда вам нужно это
select nullif(greatest(coalesce(<DATEA>, from_unixtime(0)), coalesce(<DATEB>, from_unixtime(0))), from_unixtime(0));
Теперь, если оба равны нулю, вы получаете ноль, если один из них не равен нулю, и оба они не равны нулю, вы получаете наибольшее значение.
Этоэто безумие, особенно если вы будете использовать его несколько раз, для этого вам может потребоваться создать его как функцию, например:
delimiter //
drop function if exists cp_greatest_date//
create function cp_greatest_date ( dateA timestamp, dateB timestamp ) returns timestamp
deterministic reads sql data
begin
# if both are null you get null, if one of them is not null of both of them are not null, you get the greatest
set @output = nullif(greatest(coalesce(dateA, from_unixtime(0)), coalesce(dateB, from_unixtime(0))), from_unixtime(0));
# santiago arizti
return @output;
end //
delimiter ;
Затем вы можете использовать ее вот так
select cp_greatest_date(current_timestamp, null);
-- output is 2017-05-05 20:22:45