mysql 计算时间函数差,按季度,按周统计数据等

本文介绍如何在MySQL中利用时间函数计算日期差,包括按季度、按周进行统计数据。示例展示了不同函数在按年、季度、月、周查询时的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据时间计算时间差
函数TIMESTAMPDIFF(unit,begin,end)
unit支持的单位有:MICROSECOND,SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER,YEAR.
begin,end不需要相同的数据结构,可以存在一个为Date一个DateTime
以下是计算年份差demo:

SELECT TIMESTAMPDIFF(YEAR,'2010/10/10',CURDATE()) 年份差;
SELECT TIMESTAMPDIFF(YEAR,'2010-10-10',CURDATE()) 年份差;
SELECT TIMESTAMPDIFF(YEAR,20101010,CURDATE()) 年份差;

三个函数的区分 NOW(),CURDATE(),CURTIME()
在这里插入图片描述

#工作中的一个demo

#根据以下筛选条件算出总计:
#1、身份证前2位数字,非54、62、63、64、65
#2、手机号前2位数字,非16、19
#3、年龄满足25-45
SELECT COUNT(*) FROM `user` 
WHERE id_num!='' 
AND LEFT(id_num,2) NOT IN (54,62,63,64,65) 
AND LEFT(mobile,2) NOT IN (16,19)  
AND TIMESTAMPDIFF(YEAR,SUBSTRING(id_num,7,8),CURDATE()) BETWEEN 25 AND 45;

按季度查询数据 QUARTER,按月查询month,按年查询year,按周查询week

#按季度
SELECT QUARTER( CURDATE( )) 当前季度,QUARTER(create_at) 实际季度,COUNT(*) 注册人数
FROM `user` 
GROUP BY QUARTER(create_at)

在这里插入图片描述

#按月
SELECT MONTH(create_at) 实际月数,WEEK(create_at) 实际周数,COUNT(*) 累计注册人数 FROM `user` 
GROUP BY MONTH(create_at),WEEK(create_at);

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值