MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数、分钟数、小时数、天数、周数、季度数、月数、年数,当前日期增加或者减少一天、一周等等。 SELECT TIMESTAMPDIFF(类型,开始时间,结束时间) 相差的秒数: SELECT TIMESTAMPDIFF(SECOND,'1993-03-23 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S')) 相差的分钟数: SELECT TIMESTAMPDIFF(MINUTE,'1993-03-23 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S')) 相差的小时数: SELECT TIMESTAMPDIFF(HOUR,'1993-03-23 00:00:00 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S')) 相差的天数: SELECT TIMESTAMPDIFF(DAY,'1993-03-23 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S')) 相差的周数: SELECT TIMESTAMPDIFF(WEEK,'1993-03-23 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S')) 相差的季度数: SELECT TIMESTAMPDIFF(QUARTER,'1993-03-23 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S')) 相差的月数: SELECT TIMESTAMPDIFF(MONTH,'1993-03-23 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S')) 相差的年数: SELECT TIMESTAMPDIFF(YEAR,'1993-03-23 00:00:00',DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S')) 获取当前日期: SELECT NOW() SELECT CURDATE() 当前日期增加一天: SELECT DATE_SUB(CURDATE(),INTERVAL -1 DAY) 当前日期减少一天: SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY) 当前日期增加一周: SELECT DATE_SUB(CURDATE(),INTERVAL -1 WEEK) 当前日期增加一月: SELECT DATE_SUB(CURDATE(),INTERVAL -1 MONTH) SELECT DATE_SUB(NOW(),INTERVAL -1 MONTH) FRAC_SECOND 毫秒 SECOND 秒 MINUTE 分钟 HOUR 小时 DAY 天 WEEK 星期 MONTH 月 QUARTER 季度 YEAR 年 需要计算用户平均登录时长 二、语法介绍 1、语法:TIMESTAMPDIFF TIMESTAMPDIFF(SECOND,start_time,end_time) 2、说明: (start_time与end_time的格式是:2021-09-01 18:50:52,) 计算start_time与end_time之间的整数差。其结果的单位由SECOND参数给出(我写的是秒)。 该参数必须是以下值的其中一个: FRAC_SECOND。表示间隔是毫秒 SECOND。秒 MINUTE。分钟 HOUR。小时 DAY。天 WEEK。星期 MONTH。月 QUARTER。季度 YEAR。年 三、具体写法 计算出用户平均登录时长单位分保留两位小数 求和单位(秒):SECOND 时间差:TIMESTAMPDIFF 求和:SUM 保留两位小数:FORMAT 总条数:count(*) SELECT FORMAT((SUM(TIMESTAMPDIFF(SECOND,start_time,end_time))/count(*)/60),2) tiem FROM ump_user WHERE id = '2113e4b85d38413c8eb8e8e676aff7b5'例:
一、业务需求: