我有这样的桌子
现在时间:16:00
User counter last_time
===== ======= =========
user1 3 14:30
user2 2 15:40
user3 3 15:45
我只想显示last_time比现在少1小时的结果。
所以考虑到我现在的时间是16:00,计数器的总和应为5。
我在某些用户事件期间更新了计数器和last_time。 我应该考虑另选一列还是可以做到?
答案 0 :(得分:1)
请考虑以下内容:
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(counter INT NOT NULL
,last_time TIME NOT NULL PRIMARY KEY
);
INSERT INTO my_table VALUES
(1,'14:30:00'),
(2,'15:40:00'),
(4,'15:45:00');
SELECT SUM(counter) total
FROM my_table
WHERE last_time >= CAST('16:00:00' AS TIME) - INTERVAL 1 HOUR;
+-------+
| total |
+-------+
| 6 |
+-------+
对于您的情况,可以将CAST...
替换为...
SELECT SUM(counter) total
FROM my_table
WHERE last_time >= TIME(NOW() - INTERVAL 1 HOUR);