私はデータベース結果に基づいてウェブサイトの記事の統計を作成するタスクを持っています。私は記事の量を毎月追加して計算し、これらの結果を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
をしかし、私はそれぞれの最初と最後の日を見つける必要があることを確認しますその月の月。そして、私はこの瞬間にくっついた。ですから、これらの最初と最後の日を配列として見つける方法を教えてください。私は、$startDate
が$endDate
に等しくなるまで、whileループでstrtotime("+1 month",$date)
のようなものを作るべきだと思う。前もって感謝します。
Upd。データベースには合計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
はまさに、これは使用してください: '(DATE_FORMATを選択日付、 '%Y-%m')、GROUP BY GROUP BYの総数としてのCOUNT(*); – ajreal
これは必要なフォーマットですか? '' SELECT date_format(date、 '%Y-%m') 'を選択すると、選択した列が間違っているので、GROUP BY 1、' – thirtydot
' GROUP BY 1; 'OR 'SELECT date_format(date、'%m-%Y ')、COUNT(*)は記事GROUP BY 1からの総数として、または' – ajreal