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

Как получить разницу между двумя датами, округленными до часов

Я проиллюстрирую, что я хотел бы получить в следующем примере:

'2010-09-01 03:00:00' - '2010-09-01 00:10:00'

Используя TIMEDIFF(), получаем в результате 2. Это означает, что это не означает, что осталось 50 минут.

В этом случае я хотел бы получить: 50 (минут)/60 = 0,83 периода. Следовательно, результат должен быть 2,83, а не 2.

4b9b3361

Ответ 1

select time_to_sec(timediff('2010-09-01 03:00:00', '2010-09-01 00:10:00' )) / 3600;

+-----------------------------------------------------------------------------+
| time_to_sec(timediff('2010-09-01 03:00:00', '2010-09-01 00:10:00' )) / 3600 |
+-----------------------------------------------------------------------------+
|                                                                      2.8333 | 
+-----------------------------------------------------------------------------+

Ответ 2

Я думаю, что более полный ответ

select time_format(timediff(onedateinstring,anotherdateinstring),'%H:%i:%s')

Это позволяет вам видеть часы, минуты, секунды и т.д., которые вы хотите видеть в нужном формате...

Дополнительная информация о time_format: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_time-format

Ответ 3

Вы можете попробовать следующее:

time_format(timediff(max(l.fecha), min(l.fecha) ),'%H:%m') //Hora y minutos

Ответ 5

Используйте TIMESTAMPDIFF для точного количества часов:

SELECT 
      b.`Start_Date`, 
      b.`End_Date`, 
      TIMESTAMPDIFF(HOUR, b.`Start_Date`, b.`End_Date`) AS `HOURS` 
FROM my_table b;

Ответ 6

MySQL получает количество часов между отметками времени:

select timestampdiff(second,'2010-09-01 00:10:00', '2010-09-01 03:00:00')/3600;

Ответ 7

Если вы используете временную метку, это может быть решением в MySQL с использованием SQL.

SELECT TIMESTAMPDIFF(HOUR, '2010-11-29 13:13:55', '2010-11-29 13:16:55') as newtable;

| newtable |

7

1 row in set (0.01 sec)