Python 使用pyodbc查询中的日期时出现问题
我正在使用使用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) 但它是空的 我错过了什么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
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