我有两个MySQL表:统计(左)和消息(右)计数,每天的消息(17个以后计数第二天)
+------------+---------+ +---------+------------+-----------+----------+
| _date | msgcount| | msg_id | _date | time | message |
+------------+---------+ +----------------------+-----------+----------+
| 2011-01-22 | 2 | | 1 | 2011-01-22 | 06:23:11 | foo bar |
| 2011-01-23 | 4 | | 2 | 2011-01-22 | 15:17:03 | baz |
| 2011-01-24 | 0 | | 3 | 2011-01-22 | 17:05:45 | foobar |
| 2011-01-25 | 1 | | 4 | 2011-01-22 | 23:58:13 | barbaz |
+------------+---------+ | 5 | 2011-01-23 | 00:06:32 | foo foo |
| 6 | 2011-01-23 | 13:45:00 | bar foo |
| 7 | 2011-01-25 | 02:22:34 | baz baz |
+---------+------------+-----------+----------+
我填写stats.msgcount,但在现实中,它仍然是空的。我在寻找一个查询方式:
- 计数的邮件数量为每stats._date(注意在2011-01-25零MSGCOUNT)
- messages.time是24小时制。 AFTER 5点(17:00:00)所有的消息应该算第二天(通知MSG_ID 3和4计数2011-01-23)
- 更新stats.msgcount持有所有罪状
我特别关注“晚于17:00:00第二天计数”部分。 (My)SQL中可能吗?
感谢您的回复!顺便说一句 - 在_date和时间旁边还有一个带时间戳的列;那会更有效率吗? – Pr0no 2012-04-07 09:01:04
只有在列中更正日期才能加快速度 - 然后您可以在该列上使用索引进行分组。如果您仍需要添加7小时或将日期部分作为时间戳,它不会有太大变化。 – piotrm 2012-04-07 12:52:27