Python 查询之间的SQlite工作不正常
创建一个桌面应用程序来计算学生的分数,这样每个学生的分数都有一个日期列,这样我就可以使用Tkinter的日历计算两个日期之间的总数Python 查询之间的SQlite工作不正常,python,sql,sqlite,tkinter,Python,Sql,Sqlite,Tkinter,创建一个桌面应用程序来计算学生的分数,这样每个学生的分数都有一个日期列,这样我就可以使用Tkinter的日历计算两个日期之间的总数 query = "SELECT SUM (scores) FROM sscores WHERE acttype = ? AND sid = ? AND ssub = ? AND sdate BETWEEN '"+ ft1.get() +"
query = "SELECT SUM (scores)
FROM sscores
WHERE acttype = ?
AND sid = ?
AND ssub = ?
AND sdate BETWEEN '"+ ft1.get() +"' AND '"+ft2.get()+"'"
c.execute(query, (sact1, stuid, f1.get()))
由于某种原因,当我在一月份之前查询时,它没有给出任何查询结果,即使我输入的唯一分数是在一月份。
当我选择1月之前的日期和1月之后的日期时,将不会有查询结果。但是,如果我选择1月期间的日期和1月之后的日期,则会给出正确的查询结果。奇怪的是,即使我在给出正确的查询结果之前选择了一个1月份的日期,但当我选择1月份之前的任何一个月份时,它什么也没有给我。根据我的理解,选择1月之前的一个月和选择一个月仍然意味着分数的日期介于两者之间,但这不会导致正确的日期。只是一个建议,您可以对所有值使用参数,并避免字符串串联来构建sql代码
query = "SELECT SUM (scores)
FROM sscores
WHERE acttype = ?
AND sid = ?
AND ssub = ?
AND sdate BETWEEN ? AND ? "
c.execute(query, (sact1, stuid, f1.get(), ft1.get() , ft2.get()))
无论如何,请确保execute调用中的值和数据类型的正确匹配顺序,以及每个变量的有效内容。看起来像字符串类型,而不是日期类型比较。PS.Unrelated tag已删除。是的,日期显示为str而不是date。我得想办法把它转换成日期类型