我需要计算自上次上午9:00创建的记录。
因此,在上午8:59,我需要对昨天以来的所有记录进行计数,在上午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
在13-11-2018 8:59 am运行查询应返回 2 (第3,4行)
在13-11-2018 9:01 am运行查询应返回 1 (第2行)
我要查找的查询应类似于:
SELECT count(id) FROM myTable WHERE created > "TIME_SINCE_9AM()"
有什么帮助吗?
答案 0 :(得分:1)
我想出了一个解决方案,我希望可以进行更漂亮的查询,但是它可以起作用...
我正在使用IF语句确定现在是在上午9点之前还是之后,并相应地在记录上进行计数(H var用于测试,如果您在其中放入18,则自上次18:00开始生效)< / p>
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