在两个条件之间返回多个列

时间:2019-10-31 17:48:47

标签: python sqlite

我有一个包含三列的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)]。 有关如何进行此计算的任何帮助或建议都将有所帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

这些条件:

theDate>=:starting<=:endof

和:

theDate >=? <=?

不是有效的SQL条件。
您需要BETWEEN

theDate BETWEEN :starting AND :endof

或:

theDate BETWEEN ? AND ?