Отрицательная числа в запросе показало 0

Есть таблица "sale" в нем две столбца дат StartDate и FinishDate

введите сюда описание изображения

сделал запрос чтобы получить остаток даты между двумя датами

select x.*, (TO_DAYS(x.MaxFinishDate)-TO_DAYS(CURDATE())) AS OstatokDate  from(
select UserID, CURDATE() AS Today, MAX(FinishDate) as MaxFinishDate
from sale 
group by UserID) as x

введите сюда описание изображения

В маем случае запрос показывает -25 как сделать в запросе если число отрицательное показало 0?


Ответы (1 шт):

Автор решения: teran

по существу вопроса GREATEST() выбирает максимум из двух значений.
в остальном, для разницы в датах есть datediff, и curdate в подзапросе избыточен. что-то вроде этого:

SELECT UserID
     , CURDATE() AS today
     , MaxFinishDate as maxDate
     , GREATEST(0, DATEDIFF(MaxFinishDate, CURDATE())) AS days
FROM (
    SELECT UserID, MAX(FinishDate) as MaxFinishDate
    FROM sale 
    GROUP BY UserID
  ) as x
→ Ссылка