关于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
最新文章
- mysql 链接失败(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES))
- jq 获取元素的宽度时,如何取得小数部分
- load()方法---------jQuery动态加载html
- 安卓代码覆盖率:android studio+ gradle+jacoco
- ubuntu-12.10-server安装图形界面
- Unity2.0容器自动注册机制
- UITableViewCell 自适应高度 ios8特性
- 如何让你的Apache支持include文件解析和支持shtml的相关配置
- Linux常见命令(二)
- 【Arduino】2017年电子设计大赛B题 滚球控制系统|板球系统
- remove-weknow-ac from mac chrome
- CentOS7 yum安装配置 drbd-84-utils (外部模式)
- SpringMVC处理跨域请求时的一个注意事项
- bzoj3029 守卫者的挑战 (多维dp)
- HTML5 多媒体音视频处理
- 框架流程图绘制工具OmniGraffle 7 for Mac
- C#下编程完成IIS网络App的权限设置
- 微信小程序 --- model弹框
- [TypeScript] Work with DOM Elements in TypeScript using Type Assertions
- SpringBoot_10_打成jar包后使用外部配置文件中的配置来启动工程
热门文章
- 怎么在vue中使用less
- xml 和html 语言区别
- Javascript版-显示相应图片的详细信息
- jQuery-强大的jQuery选择器、过滤器
- kafka 0.8.2 消息生产者 KafkaProducer
- JS 正则表达式否定匹配(正向前瞻)
- VR上天了!全景商业化落地了!——VR全景智慧城市
- Windows 7 蓝屏代码大全 &; 蓝屏全攻略
- 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”的解决方法!
- 走进BFC