数据库中计算两个时间字段的时间差

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 …;




你可能感兴趣的:(mysql数据库)