Ответ 1
Как насчет использования TIMESTAMPDIFF?
SELECT TIMESTAMPDIFF(HOUR, start_time, end_time)
as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
Я занимался этим часами, но я не могу заставить его работать.
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 часов в качестве вывода?
Как насчет использования TIMESTAMPDIFF?
SELECT TIMESTAMPDIFF(HOUR, start_time, end_time)
as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
Лучше использовать TIMEDIFF вместо DATEDIFF, так как DATEDIFF все время отбрасывает до дат перед сравнением. После выполнения TIMEDIFF вы можете получить часы с функцией HOUR.
SELECT HOUR(TIMEDIFF(end_time, start_time)) as `difference`;
Вы можете использовать функцию TIMEDIFF и HOUR, чтобы просто извлечь час.
SELECT HOUR(TIMEDIFF(end_time, start_time)) as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_hour
Как указано в 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 ...