天天看點

關于mysql查詢資料庫時間和系統時間差

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