MySql - считать записи с прошлого раза, когда был час - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно посчитать записи, созданные с момента его последнего 9:00 утра.

1002 *, поэтому в 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

при выполнении запроса в 13-11-2018 8:59 должна возвращаться 2 (строки 3,4)

при выполнении запроса в 13-11-2018 9:01 утра должен возвращаться 1 (строки 2)

запрос, который я ищу, должен выглядеть примерно так:

SELECT count(id) FROM myTable WHERE created > "TIME_SINCE_9AM()"

любая помощь?

1 Ответ

0 голосов
/ 13 ноября 2018

Я нашел решение, я надеялся на более красивый запрос, но он работает ...

Я использую оператор IF, чтобы определить, является ли сейчас время до 9 утра или после, и, соответственно, подсчитываю записи (переменная H предназначена для тестирования, если вы введете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...