0

タイムスタンプが関連付けられたレコードのデータベースがあります。日ごとにグループ化されたデータベースからレコードを取得したいので、同じ日付 (24 時間スパン) のレコードが他にある場合は、それらをグループ化したいと考えています。これは MYSQL で実行できますか、それともレコードを取得して PHP を使用して配列に整理する必要がありますか?

これが私のテーブルのスクリーンショットです:

ここに画像の説明を入力

これまでの私のモデル関数は次のとおりです。

public function getUsersMoves($options) {   
        $query = "SELECT * FROM myzone_user_hr_records";
        if(isset($options['GUID'])) {
            $query .= " WHERE GUID = '" . $options['GUID'] . "'";
        }
        if((isset($options['minHR'])) &&  isset($options['maxHR'])) {
            $query .= " AND (hr BETWEEN '" . (int)$options['minHR'] . "' AND '" . (int)$options['maxHR'] . "')";
        } else if (isset($options['zone'])) {
            $query .= " AND zone = '" . (int)$options['zone'] . "'";
        }
        if(isset($options['activity'])) {
            $query .= " AND title = '" . $options['activity'] . "'";
        }

        $query .= " ORDER BY time DESC";

        $query = $this->db->query($query);
        return $query->result_array();
    }

そして私のコントローラコード:

$moves = $this->myzone_model->getUsersMoves($options);

たとえば (2012-11-20) のように、タイムスタンプに同じ日付がある場合、これらのレコードがグループ化されるようにデータを並べ替えます。

ありがとう

4

2 に答える 2

4

これを試して :

SELECT *, DATE(time) AS date FROM [whatever you want] GROUP BY date
于 2013-02-19T15:40:38.297 に答える
1
select * from TABLE where `time` like '2012-11-20%'

私が提案したオプションが機能するのは、WHERE の LIKE 条件が時間フィールドから で始まるすべての日付を選択するため2012-11-20です。つまり、1 日の何時であっても、その日のすべての結果が返されます。

これを機能させるには、忘れずに LIKE を使用し、最後にワイルドカードを追加する必要があります - %。必要に応じて、先頭にワイルドカードを追加することもできます。複数年のすべての日 (12 月 11 日) を返す例は次のようになります。

SELECT * FROM TABLE WHERE `time` like '%-12-11%'
于 2013-02-19T15:46:25.930 に答える