如何将两个日期之间的差异四舍五入到小时

时间:2010-09-01 19:26:23

标签: sql mysql

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

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

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

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

9 个答案:

答案 0 :(得分:99)

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

答案 1 :(得分:13)

我认为更完整的答案是

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

答案 2 :(得分:11)

您可以尝试以下方法:

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

答案 3 :(得分:10)

使用TIMESTAMPDIFF确切的小时数:

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

答案 4 :(得分:6)

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

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

答案 5 :(得分:2)

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

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

答案 6 :(得分:1)

如果您正在使用时间戳,这可能是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)

答案 7 :(得分:1)

使用UNIX_TIMESTAMP:

SELECT (UNIX_TIMESTAMP(End)-UNIX_TIMESTAMP(Start))/3600
AS Difference_in_hours 
FROM Table

答案 8 :(得分:0)

SELECT ABS(TIME_TO_SEC(TIMEDIFF('2010-09-01 03:00:00', '2010-09-01 00:10:00')) / 3600)

结果:2.8333