我将在下面的例子中说明我想要的内容:
'2010-09-01 03:00:00' - '2010-09-01 00:10:00'
使用TIMEDIFF()
,结果得到2。这意味着,它没有考虑剩下的50分钟。
在这种情况下,我想得到的是:50(分钟)/ 60 = 0.83期间。因此,结果应该是2.83而不是2.
答案 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