1. 计算两个时间差
TIMESTAMPDIFF(时间单位,参数1,参数2)
参数1是小日期,参数2是大日期,时间单位为时间差的单位:
select TIMESTAMPDIFF(YEAR, '2017-08-13 00:00:00', '2018-08-14 00:00:00'); //年 返回1
select TIMESTAMPDIFF(QUARTER, '2017-08-13 00:00:00', '2018-08-14 00:00:00'); //季度 返回4
select TIMESTAMPDIFF(month, '2017-08-13 00:00:00', '2018-08-14 00:00:00'); //月份 返回12
select TIMESTAMPDIFF(week, '2017-08-13 00:00:00', '2018-08-14 00:00:00');//周 返回52
select TIMESTAMPDIFF(DAY, '2018-08-13 00:00:00', '2018-08-14 00:00:00'); //返回结果 1
select TIMESTAMPDIFF(HOUR, '2018-08-13 00:00:00', '2018-08-14 00:00:00'); //返回结果 24
select TIMESTAMPDIFF(MINUTE, '2018-08-13 00:00:00', '2018-08-14 00:00:00'); //返回结果 1440
select TIMESTAMPDIFF(SECOND , '2018-08-13 00:00:00', '2018-08-14 00:00:00'); //返回结果 86400
// 毫秒 FRAC_SECOND,低版本可以使用SECOND*1000
TIMDIFF(参数1,参数2)
参数1是大日期, 参数2是小日期,格式化结果
select TIMEDIFF( '2018-08-15 00:00:00', '2018-08-14 00:00:00');
结果:
2. 按条件求和
SUM( IF(条件,返回值1,返回值2) )
if:满足条件,返回值1进行sum求和,不满足,返回值2进行sum求和
SUM(IF(changed_content = '1',duration,0)) as runningTime,
如果changed_content 等于1,将duration进行加法处理,否则,加0
3. 计算百分比
用到两个函数
(1) CONCAT(str1,str2,…) 拼接字符串,用于拼接 %
(2)ROUND(X) 返回最接近X值的整数数
ROUND(X,D) 返回最接近X值的数,保留D位小数
select CONCAT(ROUND(2/100,2)*100,'%');
结果: