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

32
19 мая 2022, 10:10

Есть таблица "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?

Answer 1

по существу вопроса 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
READ ALSO
Можно ли открывать доступ к MySql из вне

Можно ли открывать доступ к MySql из вне

Встал вопрос о доступе к одной базе данных с разных доменов расположенных на разных серверахПодскажите можно ли открыть доступ к базе данных...

32
Выполнение функции в условии if

Выполнение функции в условии if

Если я выполняю функцию в условии

60
Проблема с одновременной обработкой запросов 2х и/или более клиентов.(QTcpServer/QTcpSockets/C++)

Проблема с одновременной обработкой запросов 2х и/или более клиентов.(QTcpServer/QTcpSockets/C++)

у меня проблема с одновременной обработкой запросов 2х и/или более клиентовкогда подключаются 2 или более клиенты к моему серверу сервер...

48
Выбивает программу с ошибкой -1073741819

Выбивает программу с ошибкой -1073741819

В общем есть два класса, один для хранения, другой для добавления строк в базу данныхПолный код программы:

29