在 sqlalchemy 中根据日期搜索数据

Posted

技术标签:

【中文标题】在 sqlalchemy 中根据日期搜索数据【英文标题】:search data based on date in sqlalchemy 【发布时间】:2020-05-03 06:10:01 【问题描述】:

我在数据库中有一个类型为datetime 的列(scheduledStartDateTime),我必须根据用户输入的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()

我的搜索日期是2020-01-13 07:16:06,即订单号5673,所以理想情况下我正在寻找订单号5677,但我得到的是5679。我如何也可以根据小时分钟和秒来比较日期。

【问题讨论】:

【参考方案1】:

所以您想转换 datetime 但是 func.date()datetime 转换为 date,因此您缺少小时/分钟/秒。您只需要像往常一样执行比较,而无需转换您的日期时间:

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

或者,如果提供的日期时间之一不是datetime 格式,您可以使用func.datetime() 进行转换,而不会丢失时间信息。

【讨论】:

以上是关于在 sqlalchemy 中根据日期搜索数据的主要内容,如果未能解决你的问题,请参考以下文章