0

だから私は仕事のために構築しているウェブサイトの統計セクションを構築しています(マネージャーの要求)。「24時間」グラフの機能コードがあります。私が持っているグラフコードは完全に機能しますが、mysql が時間ではなく日数に基づいてデータを引き出すための正しいコードを取得するのに問題があります

以下の時間別コード

function get_hourly_graph() {
    // First lets create a daily graph for experiment then we can build on that
    date_default_timezone_set('Australia/Sydney');
    $current_hour = date('H');

    // SQL Query to get data we want
    $sql = mysql_query("SELECT hour( time_hit ) AS hour , count( hour( time_hit ) ) AS hits FROM hits WHERE time_hit > now( ) - INTERVAL 1 DAY GROUP BY hour( time_hit );")
        or die(mysql_error());

    // Remove an hour off current time for array and the loop that will put the data into the array
    $array_hour = $current_hour - 1;

    // Add a 0 if the timer is under 10. just so this is compatable with the SQL data
    if ($array_hour < 10) {
        $array_hour = 0 . $array_hour;
    }

    // initialise the array so we can set up the indexes and data in the next couple of loops
    $hit_data = array();

    // Work back the clock 24 hours and create the array indexes
    for ($i = 0; $i < 24; $i++) {
        $new_hour = $current_hour;

        if ($new_hour < 1) {
            $new_hour = 24;
            $hit_data[$new_hour] = "0";
        }
        else {
            $hit_data[$new_hour] = "0";
        }

        $current_hour = $new_hour - 1;
    }

    // Loop through  the rest of the array and replace null with 0s
    while ($results = mysql_fetch_array($sql, MYSQL_ASSOC)) {
        foreach ($hit_data as $hour => $hits) {
            if ($results['hour'] == $hour) {
                $hit_data[$hour] = $results['hits'];
            }
        }
    }

    $hit_data = array_reverse($hit_data, true);

    // Generate the graph for the 24 hour data
    generate_graph ($hit_data, '24 Hour Report', 'hourly_graph.png', 'Time (Hours)', 'Hits');
}

「ヒット」テーブルは、基本的に「hit_id」「ip_address」「timestamp」の 3 つのフィールドであり、「YYYY-MM-DD hh:mm:ss」=「2011-08-04 12:40:34」の下にあります。

以下の SQL コードを時間ではなく日で動作するように変更するにはどうすればよいですか?

4

2 に答える 2

1
SELECT DATE_FORMAT('date_column', '%Y-%m-%e') as day ...... group by day

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

于 2011-11-14T22:50:33.177 に答える