MySQL日期计算间隔

发布时间: 2023-11-21 11:29 阅读: 文章来源:1MUMB1684PS

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‘

•••展开全文
相关文章