查询以比较带时间的日期和不带时间的日期 - python 使用访问数据库
Posted
技术标签:
【中文标题】查询以比较带时间的日期和不带时间的日期 - python 使用访问数据库【英文标题】:Query to compare between date with time and date without time - python using access db 【发布时间】:2017-01-04 15:42:28 【问题描述】:我需要帮助来创建查询以比较带时间的日期和不带时间的日期。我正在使用带有访问数据库(pypyodbc)的python。
在数据库中,我有一个包含日期/时间(包括时间)的列,在 python 中,我有一个日期时间对象(没有时间)。
我想编写一个只比较两者日期的 sql 查询。
例如:
cur.execute("SELECT * FROM MDSSDB WHERE [ValidStartTime] = #2016-05-17#")
ValidStartTime 包含时间,因此它不起作用。我只想要 ValidStartTime 中的日期。
【问题讨论】:
【参考方案1】:考虑使用 MS Access 的 DateValue
函数,该函数仅提取日期组件(TimeValue
是时间组件对应项)。
另外,考虑将您的日期值作为参数传递,以便更好地与您的 Python 环境集成,而无需连接到 Access 的 #
表单中。下面将参数作为一个项目的元组传递:
from datetime import datetime
...
cur.execute("SELECT * FROM MDSSDB WHERE DateValue([ValidStartTime]) = ?", (datetime(2016, 5, 17),))
【讨论】:
可能值得一提的是WHERE DateValue([ValidStartTime])
不是sargable,因此查询将始终进行表扫描,即使ValidStartTime
上有索引。以上是关于查询以比较带时间的日期和不带时间的日期 - python 使用访问数据库的主要内容,如果未能解决你的问题,请参考以下文章
在带有/不带时区的日期或时间戳的查询中处理 generate_series()