Python 使用pyodbc查询中的日期时出现问题

Python 使用pyodbc查询中的日期时出现问题,python,datetime,odbc,Python,Datetime,Odbc,我正在使用使用Python2.7连接pyodbc的Access 2003数据库。视窗7 我很难理解日期查询 在下面的简单示例中,第一个查询收集用户的出生日期“dob”,它在数据库中是一个datetime.datetime对象 打印行>>>>('A0103','Susan',datetime.datetime(1986,4,10,0,0)) 当我们收集并打印日期时 dob=res[2] 我们得到 打印日期1986-04-10 00:00:00 打印类型(dob)>>>>键入“datetime.da

我正在使用使用Python2.7连接pyodbc的Access 2003数据库。视窗7

我很难理解日期查询

在下面的简单示例中,第一个查询收集用户的出生日期“dob”,它在数据库中是一个datetime.datetime对象

打印行>>>>('A0103','Susan',datetime.datetime(1986,4,10,0,0))

当我们收集并打印日期时

dob=res[2]

我们得到

打印日期1986-04-10 00:00:00

打印类型(dob)>>>>键入“datetime.datetime”

但在第二个查询中使用时

从dob=%s“%dob”的用户中选择名称

我们得到:

编程错误:('42000',“[42000][Microsoft][ODBC Microsoft Access驱动程序]查询表达式'dob=1986-04-10 00:00:00'”(-3100)(SQLExecDirectW)”中的语法错误(缺少运算符)

仅提取日期&使用datetime.date重新创建datetime对象:

y、 m,d=年月日

mydate=日期(y、m、d)

允许成功的完整查询事务

查询“从Siswa中选择id,名称,其中名称=“%s”和dob=>%s”%(nama,mydate)

收益率('A0103','Susan',datetime.datetime(1986,4,10,0,0)

但也会带来任何其他年轻的苏珊

我期待着这个问题

“从Siswa中选择id,名称,其中名称='%s',dob=%s%”(nama,mydate)

产生('A0103','Susan',datetime.datetime(1986,4,10,0,0)

但它是空的

我错过了什么

from datetime import datetime, date

sql = "SELECT name, dob FROM users"
result1 = cur.execute(sql).fetchall()

for row in result1:
    print row
    name, dob = row[1], row[2]
    print dob

    try:
        sql = "SELECT name FROM users WHERE dob = %s" % dob  
        result2 = cur.execute(sql).fetchall()
        print result
    except:
        y, m, d = dob.year, dob.month, dob.day
        mydate  = date(y, m, d)

        sql = "SELECT name FROM users WHERE dob => %s" % dob  
        result2 = cur.execute(sql).fetchall()
        print result

        sql = "SELECT name FROM users WHERE dob = %s" % dob  
        result2 = cur.execute(sql).fetchall()
        print result

我遇到了同样的问题,无法查询日期

我的解决方案是:

SELECT name FROM users WHERE DateValue(registered) <= '20-04-2015'
从用户中选择名称,其中DateValue(已注册)使用:

而不是:

sql = "SELECT name FROM users WHERE dob = %s" % dob  
sql = "SELECT name FROM users WHERE dob = %s" % dob