5

私はphpを初めて使用し、時刻/日付の操作に問題があります。

いくつかの店での毎日/毎月/毎年の訪問に関する統計を作成する必要があります。テーブル「statistics」とを含むmysqlデータベースがありますfields: "statistic_id" ( integer, primary key ) , "visitors" ( integer ), and "dateAndTime" ( timestamp )。ユーザーが来店した訪問者の数を入力するフォームがあり、その数がnow()関数を使用して日時とともにデータベースに挿入されます。

つまり、基本的に私のデータベースは次のようになります。

statistic_id , visitors , timeAndDate <br />
1............, 3........., 2012-09-29 14:45:02 <br />
2............, 5........., 2012-09-29 14:46:31 <br />
3............, 2........., 2012-09-29 18:48:11 ...etc.

私がする必要があるのは、特定の時間間隔で来たすべての訪問者を合計して表示することです。 09h-12h ; 12h-15h ; 15h-18h ; 18h-21h。したがって、これらすべての間隔とそれぞれの訪問者数を表に表示する必要があります。問題は、これらの間隔を抽出して、訪問者の合計を取得する方法がわからないことです。私は自分が知っていることすべてを試し、見つけることができましたが、成功しませんでした。12 monthsまた、月次および年次の統計を取得する必要があるので、このtimeAndDate列からすべてを取得するにはどうすればよいsum all visitors for each monthですか?

誰かがこれを行う方法を知っていますか、そして私に詳細を説明してくれますか?ありがとう

4

3 に答える 3

5

09:00から12:00の間に訪問者を獲得する

SELECT
    SUM(`visitors`)

FROM
    `my_table`

WHERE
    HOUR(`timeAndDate`) BETWEEN 9 AND 12

月ごとに訪問者を獲得するには

SELECT
    MONTH(`timeAndDate`),
    SUM(`visitors`)

FROM
    `my_table`

GROUP BY
    MONTH(`timeAndDate`)

年ごとに訪問者を獲得するには

SELECT
    YEAR(`timeAndDate`),
    SUM(`visitors`)

FROM
    `my_table`

GROUP BY
    YEAR(`timeAndDate`)

月をテーブルに出力する簡単なPHPの例

<?php

    // Connect to database
    $db = mysqli_connect('localhost', 'root', 'root', 'test') or die('Could not connect to database');

    // Prepare sql question
    $sql = "SELECT
                MONTHNAME(`timeAndDate`) AS `month`,
                SUM(`visitors`) AS `visitors`

            FROM
                `test`

            GROUP BY
                MONTH(`timeAndDate`)";

    // Query the database
    $result = mysqli_query($db, $sql);

    // Begin table
    print '<table><thead><tr><th>Month</th><th>Visitors</th></tr></thead><tbody>';

    // Loop result
    while($row = mysqli_fetch_assoc($result)) {
        print "<tr><td>{$row['month']}</td><td>{$row['visitors']}</td></tr>";
    }

    // End table
    print '</tbody></table>';

?>
于 2012-10-02T14:06:14.230 に答える
0

WHERE DATE_FORMAT(timeAndDate、'%k')9と12の間

日付形式:http ://www.w3schools.com/sql/func_date_format.asp

于 2012-10-02T14:04:25.000 に答える
0
SELECT DATE(timeAndDate), SUM(visitors) FROM Table
WHERE 
DATE_FORMAT(timeAndDate,'%k') BETWEEN 9 AND 12
AND YEAR(timeAndDate) = 2012
GROUP BY MONTH(timeAndDate)
于 2012-10-02T14:08:02.533 に答える