重複の可能性:
MySQL クエリ GROUP BY 日/月/年
データベースの列に php タイムスタンプ (例: 1307362819) が格納されています。count(*) のデータを日、週、月でグループ化したい。
たとえば、1 日、1 週間、1 か月などのエントリ数を調べたいとします。
これはどのように達成できますか?
重複の可能性:
MySQL クエリ GROUP BY 日/月/年
データベースの列に php タイムスタンプ (例: 1307362819) が格納されています。count(*) のデータを日、週、月でグループ化したい。
たとえば、1 日、1 週間、1 か月などのエントリ数を調べたいとします。
これはどのように達成できますか?
タイムスタンプから日、週、月の値を減算し、減算した値をグループ化できます。
日の値によるグループ化:
select count(*) from table group by from_unixtime(timeStampColumn, '%Y%m%d')
週の値によるグループ化:
select count(*) from table group by from_unixtime(timeStampColumn, '%Y%m%u')
月の値によるグループ化:
select count(*) from table group by from_unixtime(timeStampColumn, '%Y%m')
詳細については、次のページを参照してください:http ://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
これらを使用してみませんか:<>
SELECT COUNT(*) FROM yourTable WHERE yourTimestampField > someTimestampAWeekPast;
SELECT COUNT(*) FROM yourTable WHERE yourTimestampField > someTimestampADayPast;
mysqlの日付/時刻関数http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.htmlを使用して、過去の希望の日付を計算します。それらをintやstringなどとして保存した場合は、UNIX_TIMESTAMPを使用してください。
ここにあなたのための良い例
編集:
これを試して
select
id_user,
year(time) as AYear, week(time) as AWeek, day(time) as Aday ,
count(week(time)) as TotalPerWeek , count(day(time)) as TotalPerDay ,
count(year(time)) as TotalPerYear
from yourtable
where id_user = 16 //// the user u want to check
group by id_user, AYear, AWeek , Aday
order by AYear, AWeek , Aday
SELECT MONTH( FROM_UNIXTIME( `timeStamp` ) ) , COUNT( `id` )
FROM `discusComments`
GROUP BY MONTH( FROM_UNIXTIME( `timeStamp` ) )