SELECT (CURRENT_DATE - P.DataDiPrestito) AS "Sisssssss"
FROM prestito P, utente U
WHERE P.id_Utente = U.ID_Utente
Поэтому я вычитаю по текущей дате значение даты из моей базы данных, чтобы увидеть разницу между ними в днях.
Проблема в том, что, когда я вычитаю значение, которое в том же месяце результат будет правильным, но когда он будет за месяц до этого.
Сегодня 15 мая, и если отступ от него того же значения даты я получаю 0, если вычесть из него значение даты за день до того, как я получу 1 и т.д. И так далее.
Но когда я отвлекаюсь от значения с апреля, я получаю правильное значение плюс 70. Например, если я это делаю (15 мая - 30 апреля), мне должно быть 15, но вместо этого я получаю 85 и так далее, и если попробую чтобы использовать март или февраль, я получаю еще более высокие значения, если попытаюсь (15 мая - 6 февраля) получить 309.
Что я могу сделать?
Вы должны проверить DATEDIFF()
. Это сделает то, что вы хотите, давая разницу в день между двумя датами.
Вычитание дат друг от друга не работает, как вы думаете.
Если вы вычтите 30 апреля с 15 мая, это то, что рассчитывается внутренне:
20180515 - 20180430 = 85
Цифры просто обрабатываются как десятичные числа.
Функция, которую вы ищете, называется DATEDIFF()
.
-
(знак минус) работает с числовыми значениями. MySQL выполняет неявное преобразование значения DATE в числовое значение и выполняет числовое вычитание20180515 - 20180430
. Когда вычитание сделано, это просто вычитание чисел, концепция, что исходные значения, представленные как «даты», теряется. Я рекомендую использовать функцию TIMESTAMPDIFF с ключевым словомDAY
в качестве первого аргумента. dev.mysql.com/doc/refman/5.7/en/...