首页 > 解决方案 > 来自 sqlite3 db 的日期和时间

问题描述

我正在尝试从 sqite3 数据库中检索当天添加的数据,如果我尝试使用 strftime('%d', saledate) 从 saledate 列中检索/查询当天的数据,它不会按预期工作

self.conn = sqlite3.connect("database.db")
self.c = self.conn.cursor()
self.c.execute("CREATE TABLE IF NOT EXISTS sales(name TEXT, KSH INTEGER, saledate TIMESTAMP)")

d_s = self.c.execute("SELECT SUM(KSH) FROM sales GROUP BY strftime('%d', saledate), strftime('%d', saledate)").fetchone()
d_s = float(''.join(map(str, d_s)))
self.ui.label_28.setText(str(d_s))
self.ui.label_28.setFont(QFont("Times", 20))
self.ui.label_28.setStyleSheet("QLabel { background-color: rgb(44, 44, 44);color : white; }")
self.connection.close()

标签: databasesqlitedatetime

解决方案


该函数strftime()用于格式化日期或时间戳,当您使用修饰符时%d,结果是格式中日期的日期dd
那你为什么group by strftime('%d', saledate)(和两次)?

KSH如果您想要每天列的总和,那么您应该按天分组,您可以使用以下功能date()

SELECT SUM(KSH) AS total FROM sales GROUP BY date(saledate)

如果正如您在问题中所说,您想要当天的总和,那么您不需要group by

SELECT SUM(KSH) AS total FROM sales WHERE date(saledate) = current_date

请注意,这仅在表中的时间戳采用YYYY-MM-DD hh:mm:ssSQLite 中唯一有效的日期格式时才有效。


推荐阅读