из дат в ней есть только дата назначения тарифа, такого плана:
mysql> select record_id, rasp_time from table;
+-----------+---------------------+
| record_id | rasp_time |
+-----------+---------------------+
| 59244 | 2023-07-12 00:00:00 |
+-----------+---------------------+
| 59262 | 2023-07-15 00:00:00 |
+-----------+---------------------+
| 62462 | 2023-08-01 00:00:00 |
+-----------+---------------------+
Есть задача - выбрать тариф, который был назначен на указанное число, и все тарифы, которые были назначены позже. То есть к примеру, при указании даты 2023-07-13 в данном случае нужно получить все 3 записи (первая, потому что она была активна с 12 по 15 число, и остальные), или при указании даты 2023-09-01 получить только последнюю запись (потому что она активна с 2023-08-01 до текущего времени)
Можно ли это как-то сделать одним запросом? Мне на ум пришел только запрос с UNION такого типа:
(select * from table where rasp_time <= ${date} order by rasp_time desc limit 1)
union
(select * from table where rasp_time >= ${date})
Может есть какое-то более красивое решение?
Отправьте, пожалуйста, в правильном направлении :)
https://sqlize.online/s/wD
Обсуждают сегодня