поиск данных на основе даты в sqlalchemy - PullRequest
0 голосов
/ 16 января 2020

У меня есть столбец (scheduledStartDateTime) в базе данных, который имеет тип datetime, и я должен искать предыдущую строку данных на основе введенного пользователем datetime.

мой запрос выглядит так:

   order = self.trips_session.query(Order).filter(
                and_(
                    Order.driverSystemId == driver_system_id,
                    func.date(Order.scheduledStartDateTime) < func.date(start_date)
                )).order_by(
                DispatchOrder.scheduledStartDateTime.desc()).first()

enter image description here

моя дата поиска 2020-01-13 07:16:06 i, номер заказа 5673, поэтому в идеале я ищу номер заказа 5677 но я получаю это 5679. Как я могу сравнить даты на основе часов, минут и секунд.

1 Ответ

0 голосов
/ 16 января 2020

Таким образом, вы хотите преобразовать datetime, однако func.date() приводит к datetime в date, поэтому вам не хватает часа / минуты / секунды. Вам просто нужно выполнить сравнение как обычно, без приведения ваших datetime:

  order = self.trips_session.query(Order).filter(
                and_(
                    Order.driverSystemId == driver_system_id,
                    Order.scheduledStartDateTime < start_date
                )).order_by(
                DispatchOrder.scheduledStartDateTime.desc()).first() 

В качестве альтернативы, если один из предоставленных datetime не в формате datetime, вы можете использовать func.datetime() для приведения его / их не теряя времени информацию.

...