我正在使用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