MySQL按时间日期查询表数据做数据统计
MySQL按时间日期查询表数据做数据统计#统计一定范围内,每个单位内的数据数量【单位可以天,月、周、年、等】- #按天统计:日期和时间相关函数处理日期和时间字段的函数有很多,有的经常会在查询中使用到,下面介绍下几个相关函数的使用方法。...
·
1、#查询当天的数据记录
· SELECT * FROM 表名 WHERE TO_DAYS(日期列) = TO_DAYS(NOW());
· SELECT * FROM 表名 WHERE DATE(日期列) = CURDATE();
2、#统计一定范围内,每个单位内的数据数量【单位可以天,月、周、年、等】
- #按天统计:
· SELECT DATE_FORMAT( 日期列, '%Y-%m-%d' ) days, count(*) count FROM 表名 GROUP BY days;
- #按周统计:
· SELECT DATE_FORMAT( 日期列, '%Y-%u' ) weeks, count(*) count FROM 表名GROUP BY weeks;
- #按月统计:
· SELECT DATE_FORMAT( 日期列, '%Y-%m' ) months, count(*) count FROM 表名 GROUP BY months;
3、#统计最近七天内的数据并按天分组:
· SELECT DATE_FORMAT( 日期列, '%Y-%m-%d' ) dates, count(*) count FROM ( SELECT * FROM 表名 WHERE DATE_SUB( CURDATE( ), INTERVAL 7 DAY )<= date( 日期列 ) ) AS v GROUP BY dates;
SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) days, count(*) count FROM yq_closecontact_report where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(create_time) GROUP BY days;
SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) dates, count(*) count FROM ( SELECT * FROM yq_closecontact_report WHERE DATE_SUB( CURDATE( ), INTERVAL 7 DAY )<= date( create_time ) ) AS v GROUP BY dates;
4、#查询1分钟内的数据;
SELECT * FROM 表名 WHERE 日期列 >= CURRENT_TIMESTAMP - INTERVAL 1 MINUTE
MySQL按时间查询
今天
select * from 表名 where to_days(时间字段名) = to_days(now());
昨天
SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) = 1
近7天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)
近30天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)
本月
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
上一月
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1
查询本季度数据
select * from 表名 where QUARTER(create_date)=QUARTER(now());
查询上季度数据
select * from 表名 where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
查询本年数据
select * from 表名 where YEAR(create_date)=YEAR(NOW());
查询上年数据
select * from 表名 where year(create_date)=year(date_sub(now(),interval 1 year));
查询当前这周的数据
SELECT name,submittime FROM 表名 WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());
查询上周的数据
SELECT name,submittime FROM 表名 WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;
查询上个月的数据
select name,submittime from 表名 where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')
select * from 表名 where DATE_FORMAT(pudate,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ;
select * from 表名 where WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now())
select * from 表名 where MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now())
select * from 表名 where YEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = YEAR(now()) and MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now())
select * from 表名 where pudate between 上月最后一天 and 下月第一天
查询当前月份的数据
select name,submittime from 表名 where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')
查询距离当前现在6个月的数据
select name,submittime from 表名 where submittime between date_sub(now(),interval 6 month) and now()
日期和时间相关函数
处理日期和时间字段的函数有很多,有的经常会在查询中使用到,下面介绍下几个相关函数的使用方法。
- CURDATE 和 CURRENT_DATE 两个函数作用相同,返回当前系统的日期值。
- CURTIME 和 CURRENT_TIME 两个函数作用相同,返回当前系统的时间值。
- NOW() 和 SYSDATE() 两个函数作用相同,返回当前系统的日期和时间值。
- UNIX_TIMESTAMP 获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数。
- FROM_UNIXTIME 将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数。
- TO_DAYS() 提取日期值并返回自公元0年到现在的天数。
- DAY() 获取指定日期或时间中的天值。
- DATE() 获取指定日期或时间中的日期。
- TIME() 获取指定日期或时间中的时间。
- MONTH 获取指定日期中的月份。
- WEEK 获取指定日期是一年中的第几周。
- YEAR 获取年份。
- QUARTER 获取日期所在的季度值。
- DATE_ADD 和 ADDDATE 两个函数功能相同,都是向日期添加指定的时间间隔。
- DATE_SUB 和 SUBDATE 两个函数功能相同,都是向日期减去指定的时间间隔。
- ADDTIME 时间加法运算,在原始时间上添加指定的时间。
- SUBTIME 时间减法运算,在原始时间上减去指定的时间。
- DATEDIFF 获取两个日期之间间隔,返回参数 1 减去参数 2 的值。
- DATE_FORMAT 格式化指定的日期,根据参数返回指定格式的值。
更多推荐
已为社区贡献4条内容
所有评论(0)