2016-11-30 82 views
0

我正在爲一個圖書館製作一個程序,並在sqlite數據庫中有一張圖書表,其中包括圖書的名稱和圖書最後取出的日期並最後返回。SQLite返回記錄日期超過一週的日期

我需要一個查詢,以顯示過期的書籍(被採取了一個多星期以前,尚未歸還的書) 到目前爲止我的代碼如下:

def findOverdueBooks(event): 
    findRecords = c.execute("SELECT * FROM bookList WHERE returned = '' AND takenOut < 'now' , '-1 week' ") 
    for row in findRecords: 
     print(row) 

我得到這個錯誤時,代碼運行

line 31, in findOverdueBooks 
findRecords = c.execute("SELECT * FROM bookList WHERE returned = '' AND takenOut < 'now' , '-1 week' ") 
sqlite3.OperationalError: near ",": syntax error 

我不明白爲什麼逗號導致一個錯誤,因爲這是它是如何在documentation所示。

我已經測試查詢的第一部分(將返回的是尚未歸還的書記錄)和正常工作,我只是在努力弄清楚如何獲得的第二部分工作

+1

缺少對日期函數的調用 – e4c5

回答

0

您的日期時間比較造成這裏的問題。它更應該是

AND takenOut < datetime('now', '-1 week') 

瞭解更多信息

SQLite Date And Time Functions這應該是一個>比較

AND takenOut > datetime('now', '-1 week') 

你可以一試就像下面,如果您使用的日期部分僅比較

WHERE DATE(takenOut) >= DATE('now', 'weekday 0', '-7 days') 
+0

s,這是擺脫了語法錯誤。但是,它沒有返回任何結果。它應該在我的數據庫中記錄takenOut字段爲「2016-11-15」的記錄。任何想法爲什麼?如果不是那麼沒問題,我可以提出一個新問題 – JoeW373

+0

@ JoeW373,如果有幫助,請參閱編輯答案。 – Rahul

+0

我改變它說'-7天'而不是'-1周',現在它工作,這很奇怪,這是如何造成這個問題。謝謝您的幫助 – JoeW373

相關問題