2016-12-05 66 views
1

以下代碼不起作用,因爲日期時間以此格式返回值: datetime.date(2016,12,5)。數據庫中的信息是以日期時間輸入的,所以我認爲SQL lite能夠處理它。日期時間SQL命令不起作用

唯一的區別是,表事件中的日期具有小時和分鐘,因此我試圖提取當天的所有事件。

第一天

date1 = (datetime.datetime.now() + datetime.timedelta(days=1)).date() 
rows1 = db.execute ("SELECT * FROM events WHERE date LIKE :date ORDER BY date", date = date1) 

ERROR

rows1 = db.execute ("SELECT * FROM events WHERE date LIKE :date ORDER BY date", date = date1) File "/usr/lib/python3/dist-packages/cs50/sql.py", line 41, in execute raise RuntimeError(e) RuntimeError: Don't know how to literal-quote value datetime.date(2016, 12, 5)

我怎樣才能解決這個問題?

回答

0

解決吧..

date1 = (datetime.datetime.now() + datetime.timedelta(days=1)).date() 
rows1 = db.execute ("SELECT * FROM events WHERE date LIKE :date ORDER BY date", date = str(date1) +'%') 

爲了喜歡工作,你需要一個%

+1

什麼固定它字符串化'date1'用'STR(DATE1)'所以你傳入字符串'2016-12-06'。 Python SQLite驅動程序告訴你它不知道如何對日期對象進行字符串化,你必須這樣做。 '%'只是'LIKE'的通配符,現在你傳遞'2016-12-06%',它將匹配以'2016-12-06'開頭的任何日期。 – Schwern