Выбор записей предыдущего часа в mysql

Я пытаюсь выбрать сообщения, которые добавлены в последний час с текущего времени. Я изучил предыдущие вопросы, но они используют фиксированную дату или дату и время. Для этого я использую следующий запрос:

SELECT * FROM `wp_posts` 
WHERE post_date >= SUBTIME(CURRENT_TIMESTAMP(), "1:0:0") 
and post_date <= CURRENT_TIMESTAMP();

Этот запрос не отображает никаких результатов. Когда, когда я использую его без И, он просто работает идеально. Итак, как выбрать записи предыдущего часа, используя текущее время и время, поскольку я использую для этого CURRENT_TIMESTAMP()?

WHERE post_date BETWEEN DATE_SUB(NOW(), INTERVAL 1 HOUR) AND NOW()
Barmar 20.04.2023 20:16

Вам действительно нужно <= CURRENT_TIMESTAMP()? Может ли дата публикации быть в будущем>?

Barmar 20.04.2023 20:17

Можете ли вы воспроизвести проблему с примерами данных в скрипте ?

forpas 20.04.2023 20:21

это прекрасно работает dbfiddle.uk/nGDj02cd

nbk 20.04.2023 20:21

@Barmar, да, пост может иметь даты в будущем

MdFarzan 21.04.2023 07:27

Если это работает без AND post_date <= CURRENT_TIMESTAMP(), все ваши последние сообщения должны быть в будущем, у вас нет ни одного за предыдущий час.

Barmar 21.04.2023 16:58
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
6
59
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

 create table wp_posts(
         id int, 
         post_date datetime);

insert into wp_posts(id, post_date)
      values(1, '2023-04-20 08:15:00'),
      (2, '2023-04-21 18:5:00'),
      (3, '2023-04-21 18:1:00'),
      (4, '2023-04-21 18:16:00'),
      (5, '2023-04-21 18:25:00'),
      (6, '2023-04-20 18:30:00');
select current_timestamp
текущая_временная метка 2023-04-20 18:40:39

Запрос:

SELECT * FROM `wp_posts` 
WHERE   post_date > now() - interval 1 hour;

Выход:

идентификатор Дата публикации 2 2023-04-21 18:05:00 3 2023-04-21 18:01:00 4 2023-04-21 18:16:00 5 2023-04-21 18:25:00 6 2023-04-20 18:30:00

рабочий пример

Ответ принят как подходящий

Я проверил ваш код, и он отлично работает для меня. Если строка не отображается, это означает, что между CURRENT_TIMESTAMP() и 1 часом назад нет post_date.

С другой стороны, если мы предположим, что post_date всегда будет меньше вашего CURRENT_TIMESTAMP() (я не знаю, ваш ли это случай; вы не указали), в качестве предложения вы можете улучшить свой код, просто просто делаю это.

SELECT * FROM `wp_posts` 
WHERE post_date >= SUBTIME(CURRENT_TIMESTAMP(), "1:0:0")

Если post_date всегда меньше, чем CURRENT_TIMESTAMP(), нет необходимости его включать.

Другие вопросы по теме

Похожие вопросы