在 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 注入