我正在使用python 2.7连接pyodbc来访问Access 2003数据库。 Windows 7从pyodbc查询中使用日期的问题
我无法理解日期查询。
在下面这个简单的例子中,第一个查询收集用户的出生日期'dob',它在数据库中是一个datetime.datetime对象。
打印行>>>>( 'A0103', '苏珊',datetime.datetime(1986,4,10,0,0))
当我们收集到的日期&打印它
DOB = RES [2]
我们得到
打印DOB >>>> 1986年4月10日00:00:00
打印类型(DOB)>>>类型 'datetime.datetime'
但是当在第二个查询中使用。
“SELECT名字来自DOB =%s的用户” %DOB “
我们得到:
ProgrammingError:( '42000'。”[42000] [微软] [ODBC Microsoft Access驱动程序]语法查询表达式'dob = 1986-04-10 00:00:00'(-3100)(SQLExecDirectW)“)
提取日期&使用datetime.date重新创建日期时间对象:
y,m,d = dob.year,dob.month,dob.day
数值指明MyDate =日期(Y,M,d)
允许sucsesfull查询事务,
查询“SELECT ID,名称FROM Siswa WHERE NAME = '%s' 和DOB =>%的”%(NAMA,数值指明MyDate)
产率( 'A0103', '苏珊',datetime.datetime(1986,4,10,0,0)
而且将提供任何其他苏珊那名年轻
我希望查询
“SELECT ID,名字从Siswa其中name = '%s' 和出生日期=%s的” %(NAMA,指明MyDate)
,而产生( 'A0103', '苏珊' ,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