【按固定周期统计】
先看一条完整的sql语句:
select date_format(date_add(startDate, interval 8 hour), '%u') as period, count(1) as total from table1 group by period;
解释:
date_add 时间增加,例如startDate字段时区差异为8小时,则可以使用date_add(startDate, interval 8 hour)在统计时增加8小时。
date_format 将时间转换成字符串,在按固定周期(如天、周、月等)进行统计时十分有用。用法为date_format(startDate, '%u')。第一个参数是日期/时间表达式,第二个参数是格式化字符,常用的有:
- %Y-%m-%d为年月日,例如2014-09-28;
- %u为周,周一为一周的开始日期,例如;
- %U也是周,周日为一周的开始日期;
- %m为月
【按时间差统计】
测试SQL语句:select timestampdiff(hour, '2014-09-29 16:00:00', '2014-09-29 18:00:00');
得到的结果是2
timestampdiff(interval,datetime_expr1,datetime_expr2) 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。该参数必须是以下值的其中一个:
- FRAC_SECOND 表示间隔是毫秒
- SECOND 秒
- MINUTE 分钟
- HOUR 小时
- DAY 天
- WEEK 星期
- MONTH 月
- QUARTER 季度
- YEAR 年
round(表达式, 精度) 返回将参数四舍五入,精度指小数点后面保留的位数。