我需要统计自上次上午 9:00 以来创建的记录。
因此,在上午 8:59,我需要统计昨天上午 9:00 以来的所有记录,而在上午 9:01,我需要统计今天上午 9:00 以来的所有记录,
数据样本
ID | created
----------------------------------
1 | 2018-11-13 17:00
2 | 2018-11-13 09:00
3 | 2018-11-13 08:01
4 | 2018-11-12 13:00
5 | 2018-11-11 17:31
在 2018 年 11 月 13 日上午 8:59 运行查询应返回 2(第 3,4 行)
在 2018 年 11 月 13 日上午 9:01 运行查询应返回 1(第 2 行)
我正在寻找的查询应该是这样的:
SELECT count(id) FROM myTable WHERE created > "TIME_SINCE_9AM()"
有什么帮助吗?
最佳答案
我找到了一个解决方案,我希望有一个更漂亮的查询,但它有效......
我正在使用 IF 语句来确定现在是上午 9 点之前还是之后,并相应地对记录进行计数,(H var 用于测试目的,如果您在其中输入 18,则它自去年 18:00 起就开始工作)
SET @H = "9";
SELECT
IF (TIMEDIFF(NOW(), SUBDATE(CURDATE(),INTERVAL (-@H) HOUR))<0,
SUM(CASE WHEN created>SUBDATE(CURDATE(),INTERVAL (-@H+24) HOUR) THEN 1 ELSE 0 END),
SUM(CASE WHEN created>SUBDATE(CURDATE(),INTERVAL (-@H) HOUR) THEN 1 ELSE 0 END)
) counter
FROM mytable
关于MySql - 自上次 X 点以来的记录计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284347/