Mysql 检索特定时间范围内的值之和

Mysql 检索特定时间范围内的值之和,mysql,sql,Mysql,Sql,我有一些像那样的桌子 现在时间:16:00 User counter last_time ===== ======= ========= user1 3 14:30 user2 2 15:40 user3 3 15:45 我只想显示从现在起最后一个小时缩短1小时的结果 所以考虑到我现在的时间是16:00,计数器的和的结果应该是5 在某个用户事件期间,我更新了计数器和最后一次。 我应该考虑另一个

我有一些像那样的桌子

现在时间:16:00

User    counter    last_time

=====   =======    =========

user1      3        14:30

user2      2        15:40

user3      3        15:45
我只想显示从现在起最后一个小时缩短1小时的结果

所以考虑到我现在的时间是16:00,计数器的和的结果应该是5

在某个用户事件期间,我更新了计数器和最后一次。
我应该考虑另一个栏目吗?还是我可以这样做?

< P>考虑以下内容:

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);

? 所有这些都比现在少1小时。请查看您的表架构是什么?你试过什么问题?我不明白你在问什么。您想知道如何获取最近一小时内所有行的计数器和吗?如果是的话,你到底有什么问题?您是否尝试过一些查询,但被卡住了?你没能解决的问题是什么?嘿@ThorstenKettner。这就像是每小时发送邮件的计数器。我尝试过这样的选择TIMEDIFF($time,last\u mail\u time)作为计数器的时间,其中last\u mail\u time=“$time”。我想知道根据上次邮件发送时间,我上个小时发了多少封电子邮件(计数器)。所以user就是发送电子邮件的用户。每当用户从php表单发送电子邮件时,我都会更新他的计数器。非常感谢。现在的问题是如何每小时重置计数器。也许是另一个像《第一小时》这样的专栏?这里有很多你可以带走并改编为新问题的基础。