Mariadb функция timediff вычисляет неправильное количество часов - PullRequest
0 голосов
/ 13 июня 2018

Разница во времени с 8 вечера до 6 утра должна составлять 10 часов, но это дает 14 часов

SELECT HOUR(TIMEDIFF(TIME('2018-06-01 20:00:00'),TIME('2018-06-02 06:00:00'))) AS NoofHours

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Как вы видите, если вы выбираете отдельные части, ВРЕМЯ не имеет части ДАТА:

SELECT TIME('2018-06-01 06:00:00'), TIME('2018-06-02 20:00:00')

ВЫХОД:

06:00:00 20:00:00 

То есть 14 верное

Вот пример в SQLFIDDLE

0 голосов
/ 13 июня 2018

Вы должны исправить тип данных:

SELECT HOUR(TIMEDIFF(TIMESTAMP('2018-06-01 20:00:00'),
                     TIMESTAMP('2018-06-02 06:00:00'))) AS NoofHours
                     -- TIME != TIMESTAMP

DBFiddle Demo

TIME пропускает часть даты.

SELECT TIME('2018-06-01 20:00:00'), TIME ('2018-06-02 06:00:00')
-- 20:00:00                         06:00:00

Использование функции TIMESTAMPDIFF:

SELECT TIMESTAMPDIFF(HOUR,
                     TIMESTAMP('2018-06-01 20:00:00'),
                     TIMESTAMP('2018-06-02 06:00:00')) AS NoofHours
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...