MySQL – 如何得到两个date之间的小时数的精确差异

我将在下面的例子中说明我想要的内容:

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

使用TIMEDIFF() ,我们得到2结果。 这意味着,它不考虑剩下的50分钟。

在这种情况下,我想得到的是:50(分钟)/ 60 = 0.83期间。 因此,结果应该是2.83而不是2。

 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 | +-----------------------------------------------------------------------------+ 

我认为一个更完整的答案是

 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

你可以试试以下内容:

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

它是一个非常古老的线程,但您也可以尝试TIMESTAMPDIFF并给MINUTE,HOUR,SECONDS作为限定符。

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

使用TIMESTAMPDIFF确切的小时数:

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

MySQL获取时间戳之间的小时数:

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

如果你使用时间戳,这可能是使用SQL的MySQL解决scheme。

 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)