SQLAlchemy - мин / макс между значением и значением по умолчанию - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь подготовить гибридное выражение для такого запроса Python:

(min(end_date, self.start.date()) - max(start_date, self.end.date())).days

По сути, я хочу вычислить, сколько дней с данного периода между началом и концом объекта.Более простой пример, написанный с помощью int.Допустим, у нас есть объект с начальными и конечными значениями 3 и 8. При таких значениях для ввода он должен возвращать:

  • 1, 10 - возвращать 5 (расстояние от 3 до 8)
  • 5, 10 - возврат 3 (расстояние между 5 и 8)
  • 1, 6 - возврат 3 (расстояние между 3 и 6)
  • 5, 6 - возврат 1 (расстояние между5 и 6)

Есть ли другой способ записи в sqlalchemy, кроме гигантского оператора case для каждого параметра?

1 Ответ

0 голосов
/ 20 сентября 2019

Ответ на этот вопрос был func.least и func.greatest.

Полный код был:

func.date_part(
    'day',
    func.least(end_date, cls.end) - func.greatest(start_date, cls.start)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...