在 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 中根据日期搜索数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SqlAlchemy 上订购嵌套的 SQL SELECT

如何在 Pandas 中使用 sqlalchemy 执行具有多个日期参数的 sql 存储过程

Python Flask SQLalchemy sqlite3 防止数据库搜索中的 SQL 注入

在 SQLAlchemy 中以特定格式按日期分组

SQLAlchemy 选择在 SQLite 表上给出不同的结果,原始 sql 与可选

Pandas 到 CSV 列数据类型 [重复]