@Dizzy221
PHP Программист

Можно ли выбрать ближайшую запись по заданной дате?

Есть некая таблица (c полями id, datetime, sum). Хранится дата в формате YYYY-m-d H:i:s.
В этой таблице много записей.
У нас есть нужный sum, который мы должны выбрать и нужная дата.
Необходимо достать одно ближайшее значение по дате (в обе стороны), содержащее нужный sum.

Можно ли такое провернуть средствами бд?
  • Вопрос задан
  • 901 просмотр
Решения вопроса 1
tumbler
@tumbler
бекенд-разработчик на python
SELECT * FROM my_table WHERE datetime < %s ORDER BY datetime DESC LIMIT 1
UNION
SELECT * FROM my_table WHERE datetime >= %s ORDER BY datetime ASC LIMIT 1

А потом в пыхе сравнить какая из строк ближе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
ну как один из вариантов - оперировать разницей дат - например получить первую запись, отсортированную по возрастанию этой дельты, точнее абсолютного ее значения.

в mssql синтаксисе это будет выглядеть как

select top 1 ... from ... order by abs(datediff(sec,date1,date2))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы