mysql-count记录从上次是x点开始

kg7wmglp  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(262)

我要清点从早上9点开始创建的记录。
所以早上8点59分我需要清点昨天上午9点的所有记录,早上9点01分我需要清点今天上午9点的所有记录,
数据样本

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()"

有什么帮助吗?

ki1q1bka

ki1q1bka1#

我想出了一个解决方案,我希望有一个更漂亮的查询,但它的工作。。。
我使用if语句来确定现在是在上午9点之前还是之后,并相应地运行count on records(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

相关问题