MySql-从上次X点开始计数记录

时间:2018-11-13 15:30:58

标签: mysql date select

我需要计算自上次上午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()"

有什么帮助吗?

1 个答案:

答案 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