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

Добрый день! Есть таблица, в которой есть поле 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 и т.д
Заранее спасибо!

 

Попробуй `start_date` <=

 

Это не совсем то, мне надо если запросили 18 число, и его нет, то получить первое ближайшее — 17, и все! Если 17 нет, получить 16

 

@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

 

То. Просто дату из времени выделяйте. Ну, и ORDER BY … DESC LIMIT 1 ;)

 

Код (Text):
  1. SHOW TABLE STATUS WHERE `name` = ‘mytable’

А вообще, просто куда-нибудь записывайте нужную дату.
Ну, или представление сделайте

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *