標籤:
最近遇到一個問題:開發時建表沒有 建立day month year 欄位 直接用的時間戳記,但是統計時要用到 按天,月,年排序
這個不用程式處理 直接用mysql可以處理:
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
Mysql 按年度、季度、月度、周、日SQL統計查詢