关于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://blog.ytso.com/tech/pnotes/11500.html

(0)
上一篇 2021年7月19日 11:17
下一篇 2021年7月19日 11:17

相关推荐

发表回复

登录后才能评论