Как выбрать записи, поступающие в течение следующих 12 часов?

#mysql #date #select #time

#mysql #Дата #выберите #время

Вопрос:

Я сохраняю некоторые записи в таблице с именем bookings_mst. Я сохраняю дату бронирования и время бронирования отдельно в поля как booking_date и booking_time. Теперь я хочу выбрать записи, время которых наступит в течение следующих 12 часов. Как я могу это сделать?

Ответ №1:

Попробуйте этот вариант —

 SELECT * FROM bookings_mst
WHERE
 ADDTIME(booking_date, booking_time) BETWEEN NOW() AND NOW()   INTERVAL 12 HOUR;
  

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

1. извините, но это не сработало, когда задействованы 2 даты. Например, текущая дата — 12, время — 10 вечера, дата бронирования — 13, а время — 3 часа ночи. Он не будет отображаться.

2. Пожалуйста, покажите ваш набор данных — некоторые инструкции INSERT и желаемый результат.

3. Привет, Деварт, было некоторое недопонимание. Позже я обнаружил, что дата была сохранена с неправильными значениями. Ваш запрос усовершенствован. Спасибо 🙂

Ответ №2:

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

 SELECT * FROM your_table
WHERE DATE_ADD(date_field, INTERVAL time_field HOUR_SECOND) BETWEEN
    NOW() AND 
    DATE_ADD(NOW(), INTERVAL 12 HOUR)
  

Ответ №3:

Если вы сохраняете дату и время в одном поле datetime, то запрос становится довольно простым. Чего-то подобного должно быть достаточно

 SELECT * FROM table 
where booking_datetime between utc_timestamp() 
                           and utc_timestamp()   INTERVAL 12 HOUR;