Подтвердить что ты не робот

Показывать только часы в MYSQL DATEDIFF

Я занимался этим часами, но я не могу заставить его работать.

SQL

SELECT DATEDIFF(end_time, start_time) as `difference` FROM timeattendance WHERE timeattendance_id = '1484'

start_time =   2012-01-01   12:00:00
end_time =     2012-01-02   13:00:00

Разница составляет 25 (часы). Но выход я получаю 1 (день).

Как я могу получить 25 часов в качестве вывода?

4b9b3361

Ответ 1

Как насчет использования TIMESTAMPDIFF?

SELECT TIMESTAMPDIFF(HOUR, start_time, end_time) 
           as `difference` FROM timeattendance WHERE timeattendance_id = '1484'

Ответ 2

Лучше использовать TIMEDIFF вместо DATEDIFF, так как DATEDIFF все время отбрасывает до дат перед сравнением. После выполнения TIMEDIFF вы можете получить часы с функцией HOUR.

SELECT HOUR(TIMEDIFF(end_time, start_time)) as `difference`;

Ответ 4

Как указано в MySQL ссылка, DATEDIFF занимает только несколько дней.

Если обе даты начинаются после 1970 года, вы можете вычесть временные метки:

SELECT ( UNIX_TIMESTAMP("2012-01-02 13:00:00") - 
         UNIX_TIMESTAMP("2012-01-01 12:00:00") ) / 3600 ...

или

SELECT TIMEDIFF ( "2012-01-02 13:00:00", "2012-01-01 12:00:00") / 3600 ...