1. MySQL資料庫表中有兩個時間的字段,需要計算他們的時間差:
(1)datediff函數來表示時間差。
基本文法:
DATEDIFF(datepart,startdate,enddate)
說明:
datepart可以指定時間機關,天,小時,分鐘等,但是
經過我試驗, DATEDIFF(startdate,enddate),不能指定天,時,分,秒等參數, 似乎隻能計算天數差
例子:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30')
SELECT DATEDIFF ( '2010-04-23 17:53:38', '2010-04-22 15:49:43')
(2)TIMESTAMPDIFF(datepart,startdate,enddate)
例子:
SELECT TIMESTAMPDIFF(HOUR, '2010-04-23 17:53:38', '2010-04-22 15:49:43')
可以指定結果的機關
小時:hour
秒:second
...
2.表中有兩個時間的字段(開始時間和結束時間),使用group by進行分組,計算每組的平均時間差。
需要先計算每條資料的時間差,再使用sum()将時間差進行求和。最後在代碼中計算平均數。
(1)
select
sum(TIMESTAMPDIFF(SECOND,b_time,f_time)) time
from table
group by …;
這樣雖然可以一步到位,但是經過我的實驗,速度特别的慢
(2)sql語句優化:
先使用TIMESTAMPDIFF,獲得一張新表,再在新表的基礎上分組并sum()求和,雖然是兩步操作,但是查詢速度提高很多:
select a.*,sum(a.time) time2,
from
(select
*,
TIMESTAMPDIFF(SECOND,b_time,f_time) as time
from table) a
group by …;
本文轉自:http://blog.csdn.net/zhanglei500038/article/details/71357415
轉載于:https://www.cnblogs.com/fengwenzhee/p/7079581.html