我有一个包含三列的SQLite数据库。 EmpName,theTime和theDate。我正在尝试运行一个查询,该查询将返回带有EmpName和theTime的行,这些行适合特定的日期范围。我的目标是将所有这些时间加起来并给出一周的总时间。但是,当我运行代码时,它返回的列表为0。
我尝试了以下查询:
SELECT * FROM Swipes WHERE theDate>=:starting<=:endof", {'starting': fstartingDate, 'endof': formatted}
和
SELECT EmpName AND theTime FROM Swipes WHERE theDate >=? <=?, (fstartingdate, formatted,)
和
SELECT EmpName AND theTime FROM Swipes WHERE thedate BETWEEN ? AND ?", (fstartingDate, formatted)
以及该方法的其他变体,但感觉就像我在圈子里奔跑。 这是我的代码:
def weekSummary(endofthatweek):
formatted = dt.strptime(endofthatweek, '%Y-%m-%d')
startingDate = formatted - td(days=7)
fstartingDate = startingDate.date()
con = sqlite3.connect(r'C:\Users\zstrickland.RANDSMACHINE\Documents\PymeClock\testTimeclock.db')
cur = con.cursor()
cur.execute("SELECT EmpName AND theTime FROM Swipes WHERE theDate>=:starting<=:endof", {'starting': fstartingDate, 'endof': formatted})
tupes = cur.fetchall()
con.close()
detuped = [x[0] for x in tupes]
print(detuped)
我希望以以下格式获取一个列表(可能是一个元组列表..): [((EmpName,theTime),(EmpName,theTime),(EmpName,theTime),(EmpName,theTime)]。 有关如何进行此计算的任何帮助或建议都将有所帮助。谢谢!
答案 0 :(得分:1)
这些条件:
theDate>=:starting<=:endof
和:
theDate >=? <=?
不是有效的SQL条件。
您需要BETWEEN
:
theDate BETWEEN :starting AND :endof
或:
theDate BETWEEN ? AND ?