当我需要仅计算08:00:00-16:00:00之间的时间时,从MySQL获取的两个日期时间值之间的时间计算的最佳方法是什么。
例如,如果我的值为2008-10-13 18:00:00和2008-10-14 10:00:00,则时差应为02:00:00。
我可以用SQL做什么或者最好的方法是什么?我正在建立一个网站并使用PHP。
感谢您的回答。
编辑:确切的是,我正在计算“票”在工作时间内处于特定状态的时间。时间可能是几个星期。
EDIT2:我在计算实际时差方面没有问题,但在每天00:00:00-08:00:00和16:00:00-00:00:00之间减去关闭时间。
-Samuli
答案 0 :(得分:10)
TIMEDIFF功能
TIMEDIFF()返回expr1 - expr2 表示为时间值。 expr1和 expr2是时间或日期和时间 表达式,但两者都必须是 同类型。
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
-> '2000:01:01 00:00:00.000001');
-> '-00:00:00.000001'
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
-> '2008-12-30 01:01:01.000002');
-> '46:58:57.999999'
答案 1 :(得分:1)
我认为您应该计算自己代码中的差异,而不是使用更复杂的SQL语句,因为:
答案 2 :(得分:0)
您可能想在PHP中尝试它,但我认为它在DB中会更快