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

MYSQL1523浏览0条评论MYSQL

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

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


本文地址:http://wuheng.net/blog_32.html 转载请注明出处

分享到: