【问题标题】:Query to compare between date with time and date without time - python using access db查询以比较带时间的日期和不带时间的日期 - python 使用访问数据库
【发布时间】:2017-01-04 15:42:28
【问题描述】:

我需要帮助来创建查询以比较带时间的日期和不带时间的日期。我正在使用带有访问数据库(pypyodbc)的python。

在数据库中,我有一个包含日期/时间(包括时间)的列,在 python 中,我有一个日期时间对象(没有时间)。

我想编写一个只比较两者日期的 sql 查询。

例如:

cur.execute("SELECT * FROM MDSSDB WHERE [ValidStartTime] = #2016-05-17#")

ValidStartTime 包含时间,因此它不起作用。我只想要 ValidStartTime 中的日期。

【问题讨论】:

    标签: python ms-access


    【解决方案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 上有索引。
    猜你喜欢
    • 1970-01-01
    • 2013-05-13
    • 2015-07-20
    • 2014-08-01
    • 1970-01-01
    • 2023-04-06
    • 2012-01-20
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多