现在的位置: 首页 > 综合 > 正文

mysql 按年度、季度、月度、周、日SQL统计查询

2018年05月07日 ⁄ 综合 ⁄ 共 1607字 ⁄ 字号 评论关闭

该死的mysql没有提供unix时间戳的专门处理函数,所以,如果遇到时间分组,而你用的又是整型unix时间戳,则只有转化为mysql的其他日期类型!

   FROM_UNIXTIM()将unix时间戳转为datetime等日期型!


一、年度查询

查询 本年度的数据

SELECT *

FROM blog_article

WHERE year( FROM_UNIXTIME( BlogCreateTime ) ) = year( curdate( ))



二、查询季度数据

查询数据附带季度数
SELECT ArticleId, quarter( FROM_UNIXTIME( `BlogCreateTime` ) ) 
FROM `blog_article`

其他的同前面部分:
查询 本季度的数据
SELECT
*

FROM blog_article

WHERE quarter( FROM_UNIXTIME( BlogCreateTime ) ) = quarter( curdate( ))




三、查询月度数据

本月统计(MySQL)

select * from booking where month(booking_time) =

month(curdate()) and year(booking_time) = year(curdate())


本周统计(MySQL)


select * from spf_booking where month(booking_time) =

month(curdate()) and week(booking_time) = week(curdate())



四、时间段

N天内记录

WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段) <= N


当天的记录


where date(时间字段)=date(now())


where to_days(时间字段) = to_days(now());


查询一周:
select * from table   where DATE_SUB(CURDATE(), INTERVAL 7 DAY<= date(column_time);


查询一个月:
select * from table where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH<= date(column_time);


查询'06-03'到'07-08'这个时间段内所有过生日的会员:

   Select * From user Where

DATE_FORMAT(birthday,'%m-%d') >= '06-03' and DATE_FORMAT(birthday,'%m-%d')

<= '07-08';


统计一季度数据,表时间字段为:savetime 
group by concat(date_format(savetime, '%Y '),FLOOR((date_format(savetime, '%m ')+2)/3))


select YEAR(savetime)*10+((MONTH(savetime)-1)
DIV 
3+1,count(*)

from yourTable

group by YEAR(savetime)*10+((MONTH(savetime)-1)
DIV 
3+1;


五、分组查询

     

   1、年度分组


   2、月度分组


   3、先按年度分组,再按月度分组


   4、按年月分组

   SELECT count(ArticleId), date_format(FROM_UNIXTIME( `BlogCreateTime`),'%y%m') sdate  FROM `blog_article` group by sdate


   结果:

    count( ArticleId )     sdate

17     0901

11     0902

5     0903

6     0904

2     0905

1     0907

12     0908

6     0909

11     0910

3     0911

抱歉!评论已关闭.