Как выбрать количество сегодня и завтра данных меньше, чем определенное время группы по дням? - PullRequest
1 голос
/ 03 июня 2019

У меня есть таблица, как таблица ниже.Я хочу выбрать количество и группировать по дням.

Но данные за 1 день начнут отсчет с 7:00:00 до завтра в 6:59:59 (24 часа).

Например,

Данные первого дня между '2019/06/01 7:00:00' и '2019/06/02 06: 59: 59'

Данные второго дня между '2019 /06/02 7:00:00 'и' 2019/06/03 06: 59: 59 '

Как я могу кодировать условие where?

id | create_date | judge | -----+---------------------+---------+ 1 | 2019-06-02 8:00:00 | ok | 2 | 2019-06-02 9:00:00 | ok | 3 | 2019-06-02 10:00:00 | ok | 4 | 2019-06-02 11:00:00 | ok | 5 | 2019-06-02 15:00:00 | ok | 6 | 2019-06-03 4:00:00 | ok | 7 | 2019-06-03 5:00:00 | ok | 8 | 2019-06-03 8:00:00 | ok | 9 | 2019-06-03 9:00:00 | ok | 10 | 2019-06-03 9:00:00 | fail |

Я пробовал ниже, но результат не такой, как ожидалось.

SELECT COUNT(*),DAY(create_date) FROM mytable WHERE judge = 'ok' and MONTH(create_date) = '6' and YEAR(create_date) = '2019' and TIME(create_date) > '07:00:00' Group by DAY(create_date) order by DAY(create_date) ASC

Ожидаемые результаты COUNT(*) | DAY(create_date) | -----------+---------------------+ 7 | 2 | (from id 1 to 7) 2 | 3 | (from id 8 and 9)

Ответы [ 3 ]

0 голосов
/ 03 июня 2019

Попробуйте это-

SELECT 
CAST(DATE_SUB(create_date, INTERVAL 7 HOUR) AS DATE),
COUNT(*) 
FROM YOUR_TABLE
GROUP BY CAST(DATE_SUB(create_date, INTERVAL 7 HOUR) AS DATE)
0 голосов
/ 03 июня 2019

Вы можете вычесть семь часов от каждой даты, обрезать их, чтобы показать только дату, а затем сгруппировать их:

SELECT   DATE(DATE_SUB(create_date, INTERVAL 7 HOUR)), COUNT(*)
FROM     mytable
-- Where clause if you need it...
GROUP BY DATE(DATE_SUB(create_date, INTERVAL 7 HOUR))
0 голосов
/ 03 июня 2019

Просто вычтите 7 часов для агрегации и сравнения даты / времени:

SELECT DATE(create_date - interval 7 hour) as dte, COUNT(*) 
FROM mytable
WHERE judge = 'ok' and 
      create_date >= '2019-06-01 07:00:00' AND
      create_date < '2019-07-01 07:00:00'
GROUP BY DATE(create_date - interval 7 hour) 
ORDER BY dte;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...