За последние 24 часа нас посетили 70366 программистов и 5688 роботов. Сейчас ищут 1226 программистов ...

Если нет соотвествующей даты, ищем следущую (запрос в БД)

Тема в разделе "PHP для новичков", создана пользователем Volonter, 18 фев 2023.

Метки:
  1. Volonter

    Volonter Активный пользователь

    С нами с:
    8 авг 2009
    Сообщения:
    68
    Симпатии:
    0
    Адрес:
    Москва
    Добрый день! Есть таблица, в которой есть поле start_date (datetime, 0000-00-00 00:00:00)
    делаю в нее запрос типа SELECT * FROM `table` WHERE `start_date`='2023-02-17 00:00:00'
    как бы сделать так, что если записи за эту дату нет, то ищем ближайшую к ней меньшую дату, например 2023-02-16 00:00:00, если и ее нет - ищем 2023-02-15, 2023-02-14 и т.д
    Заранее спасибо!
     
  2. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Попробуй `start_date` <=
     
  3. Volonter

    Volonter Активный пользователь

    С нами с:
    8 авг 2009
    Сообщения:
    68
    Симпатии:
    0
    Адрес:
    Москва
    Это не совсем то, мне надо если запросили 18 число, и его нет, то получить первое ближайшее - 17, и все! Если 17 нет, получить 16
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Volonter, надо выбрать записи, у которых дата равна наибольшей среди тех, у которых дата меньше или равна заданной.
    Например, так:
    Код (SQL):
    1. SELECT * FROM TABLE WHERE start_date = (SELECT MAX(start_date) FROM TABLE WHERE start_date <= '2023-02-17');
    --- Добавлено ---Или к варианту select ... from .... where start_date <= '' добавить сортировку и limit 1
     
    antoniii нравится это.
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    То. Просто дату из времени выделяйте. Ну, и ORDER BY ... DESC LIMIT 1 ;)
     
  6. Slava Rozhnev

    Slava Rozhnev Новичок

    С нами с:
    6 сен 2021
    Сообщения:
    87
    Симпатии:
    26
    Адрес:
    https://phpize.online
  7. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    Код (Text):
    1. SHOW TABLE STATUS WHERE `name` = 'mytable'
    А вообще, просто куда-нибудь записывайте нужную дату.
    Ну, или представление сделайте
     
    #7 Drunkenmunky, 19 фев 2023
    Последнее редактирование: 19 фев 2023