0

重複の可能性:
MySQL クエリ GROUP BY 日/月/年

データベースの列に php タイムスタンプ (例: 1307362819) が格納されています。count(*) のデータを日、週、月でグループ化したい。

たとえば、1 日、1 週間、1 か月などのエントリ数を調べたいとします。

これはどのように達成できますか?

4

4 に答える 4

4

タイムスタンプから日、週、月の値を減算し、減算した値をグループ化できます。

日の値によるグループ化:

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

于 2012-12-16T20:08:16.170 に答える
0

これらを使用してみませんか:<>

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を使用してください。

于 2012-12-16T19:48:03.243 に答える
0

ここにあなたのための良い例

週ごとにグループ化する

編集:

これを試して

          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
于 2012-12-16T20:07:17.127 に答える
-3
SELECT MONTH( FROM_UNIXTIME(  `timeStamp` ) ) , COUNT(  `id` ) 
FROM  `discusComments` 
GROUP BY MONTH( FROM_UNIXTIME(  `timeStamp` ) ) 
于 2012-12-16T20:04:49.347 に答える