Получить данные в текущей дате за последний час в sql

#mysql #date #datetime #group-by #hour

#mysql #Дата #дата и время #группировка по #час

Вопрос:

я хочу посчитать данные за последний час с текущей датой (например, now () — 2020-04-11 12:30:00, затем я хочу получить данные до 12. есть идеи?

table_a

 timestamp           
2020-04-11 10:00:00     
2020-04-11 10:00:00     
2020-04-11 11:00:00     
2020-04-11 12:00:00  
2020-04-11 12:30:00 
 

ожидаемые результаты:

 timestamp            count
2020-04-11 10:00:00     2
2020-04-11 11:00:00     1
2020-04-11 12:00:00     1
 

я использую mysql 8

Комментарии:

1. Пометьте свой вопрос базой данных, которую вы используете.

2. я использую mysql 8

Ответ №1:

Исходя из других вопросов, похоже, что вы используете MySQL. Итак, один из методов:

 where timestamp >= curdate() and
      hour(timestamp) < hour(now())
 

Комментарии:

1. почему вывод был пустым?

2. Я исправил запрос. Это должно быть hour(now()) , а не hour(curdate()) .

3. спасибо, это работает для меня! можете ли вы ответить на мои вопросы?

4. @hinafaya Нет. Это так не работает.

5. @hinafaya Но вы не можете спросить об этом. Я действительно не думаю, что это ясно. Я не отрицал ваш вопрос, но и не повышал голос. С другой стороны, если ответ Гордона вам помог, пожалуйста, поддержите его. Примите тот ответ, который, по вашему мнению, помог вам больше всего.

Ответ №2:

Как уже упоминал Гордон, вам нужно перейти к предложению where, однако, глядя на вашу таблицу:

 SELECT timestamp, COUNT(*)
FROM table_a
WHERE timestamp >= curdate() and
      hour(timestamp) < hour(now())
Group by timestamp
 

Должен быть полный запрос…..

Комментарии:

1. это также работает для меня, спасибо! можете ли вы ответить на мои вопросы?

2. @hinafaya если это сработает, можете ли вы принять это, чтобы будущие читатели знали, что вопрос решен??