0

データベースの結果に基づいてウェブサイトの記事の統計を作成するタスクがあります。毎月追加された記事の量を計算し、これらの結果をJavaScript統計関数に渡す必要があります。

私が最初に行っているのは、記事が追加された期間全体を見つけることです。

SELECT MIN(date) as startdate FROM articles LIMIT 1 

SELECT MAX(date) as enddate FROM articles LIMIT 1

$startDateこれで、で始まり、で終わる期間があります$endDate。これらの変数は、データベースにあるのでUNIXタイムスタンプです。データベースの列dateもUNIXタイムスタンプです。

次に、次のようなforeachループでクエリを実行して、毎月追加された記事の量を確認する必要があります。

SELECT COUNT(id) as total FROM articles 
    WHERE date > ".$startMonth." AND date < ".$endMonth

しかし、それを行うには、その期間の毎月の最初と最後の日を見つける必要があります。そして、私はこの瞬間に立ち往生しました。では、これらの最初と最後の日を配列として見つける方法を教えてください。が等しくstrtotime("+1 month",$date)なるまで、whileループのようなものを作成する必要があると思います。前もって感謝します。$startDate$endDate

更新 データベースには合計46の記事があります。私が喜んで持っているのは、月ごとにグループ化された結果です。

SELECT date, COUNT(id) as total FROM `articles`
  WHERE `author`=$author
     GROUP BY date_format(date, '%Y-%m')

結果:月の投稿11-2010 13 12-2010 33

4

1 に答える 1

2

のように、を使用してこれを達成できるGROUP BYようです

SELECT date_format(`date`, '%Y-%m'), COUNT(id) as total 
FROM articles 
GROUP BY date_format(`date`, '%Y-%m');

そして、あなたは日付の境界を必要としません...

于 2010-12-20T10:12:08.177 に答える