MySql - 自上次 X 点以来的记录计数

标签 mysql date select

我需要统计自上次上午 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/

相关文章:

java - 使用 Spring boot 和 Jackson 的日期时区

python - 如何仅按小时聚合 Pandas 日期时间轴系列

php - 使用通配符选择所有以 XXX 开头的列?

select - 如何从 knockout.js observableArray 中获取选定的菜单选项?

php - MySQL:连接(2 个表)与单个查询(1 个表)

javascript - php 代码在没有 JavaScript 验证的情况下从 html 字段发送空数据

php - mysql上月日期语句

javascript - 如何在不清除选择控件的情况下突出显示鼠标悬停

Mysql 在统计表中返回每个虚拟机的总容量

python - 在Python中使用Flask时出现"Unknown MySQL server host"