0

次の表を検討してください。

+---------+---------+------------+----------+------------+
| msg_id  | user_id | _date      | _time    | count_for  |
+-------------------+------------+----------+------------+
|   1     | 1       | 2011-01-22 | 06:23:11 | 2011-01-22 |
|   2     | 1       | 2011-01-23 | 16:17:03 | 2011-01-24 |
|   3     | 1       | 2011-01-23 | 17:05:45 | 2011-01-24 |
|   4     | 2       | 2011-01-24 | 06:58:13 | 2011-01-24 |
|   5     | 2       | 2011-01-24 | 15:59:32 | 2011-01-24 |
|   6     | 3       | 2011-01-25 | 13:45:00 | ...        |
|   7     | 3       | 2011-01-26 | 13:22:34 | ...        |
+---------+---------+------------+----------+------------+

2011-01-221 日あたりのメッセージ数をカウントしたいのですが、この日の 16:00 以降のメッセージは翌日にカウントする必要があります2011-01-22 。の16:00 以降2011-01-23なので、count_for は (翌日)2011-01-24

明らかに、最初の 5 つは手動で行いました。私の質問は次のとおりです。どのクエリを使用して、この操作を (MySQL で) 自動的に実行できますか?

4

2 に答える 2

2

何かのようなもの

SELECT count(msg_id), if(_time >= '16:00:00', _date + INTERVAL 1 DAY, _date) AS effective_date
FROM yourtable
GROUP BY effective_date

トリックを行う必要があります。

于 2012-05-02T18:45:13.687 に答える
1
SELECT IF(_time < '16:00:00', _date, ADDDATE(_date, 1)) AS d, COUNT(*)
FROM `table`
GROUP BY d
于 2012-05-02T18:45:51.017 に答える