Добрый день! Есть таблица, в которой есть поле 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 и т.д Заранее спасибо!
Это не совсем то, мне надо если запросили 18 число, и его нет, то получить первое ближайшее - 17, и все! Если 17 нет, получить 16
@Volonter, надо выбрать записи, у которых дата равна наибольшей среди тех, у которых дата меньше или равна заданной. Например, так: Код (SQL): 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
Код (Text): select * from t where start_date <= '2023-02-18' order by start_date desc limit 1 https://sqlize.online/sql/mysql57/bdda198405284ff02615ab821aede164/
Код (Text): SHOW TABLE STATUS WHERE `name` = 'mytable' А вообще, просто куда-нибудь записывайте нужную дату. Ну, или представление сделайте