我正在为一个图书馆制作一个程序,在sqlite数据库中有一个书籍表,其中包括该书最后一次取出的日期。
我需要一个查询来显示逾期的书籍。到目前为止,我的代码如下:
def findOverdueBooks(event):
findRecords = c.execute("SELECT * FROM bookList WHERE takenOut < 'now' , '-1 week' " )
for row in findRecords:
print(row)
运行代码时出现此错误
line 31, in findOverdueBooks
findRecords = c.execute("SELECT * FROM bookList WHERE takenOut < 'now' , '-1 week' " )
sqlite3.OperationalError: near ",": syntax error
我不明白为什么逗号导致错误,因为它是documentation中显示的错误。
答案 0 :(得分:2)
您的日期时间比较导致此问题。它应该是
AND takenOut < datetime('now', '-7 day')
有关详细信息,请参阅SQLite Date And Time Functions
那应该是>
比较
AND takenOut > datetime('now', '-7 day')
如果您只与日期部分进行比较,您可以尝试以下方式
WHERE DATE(takenOut) >= DATE('now', 'weekday 0', '-7 days')