ti-enxame.com

Como obter a diferença entre duas datas arredondadas para horas

Ilustrarei o que gostaria de obter no seguinte exemplo:

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

Usando TIMEDIFF(), obtemos 2 como resultado. Isso significa que não está considerando os 50 minutos restantes.

Nesse caso, o que eu gostaria de obter é: 50 (minutos)/60 = 0,83 período. Portanto, o resultado deve ser 2,83 e não 2.

47
Brian Roisentul
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 | 
+-----------------------------------------------------------------------------+
102
Matthew

Eu acho que uma resposta mais completa é

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

Isso permite que você veja as horas, minutos, segundos etc. que deseja ver no formato desejado ...

Mais informações em time_format: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_time-format

13
riahc3

Você pode tentar o seguinte:

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

Use TIMESTAMPDIFF para o número exato de horas:

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

É um encadeamento muito antigo, mas você também pode tentar TIMESTAMPDIFF e fornecer MINUTE, HOUR, SECONDS como qualificador.

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff

6
BSingh

O MySQL obtém o número de horas entre os registros de data e hora:

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

Se você estiver usando registro de data e hora, esta pode ser a solução no MySQL usando 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)
1
spacedev