database - 来自 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()
解决方案
该函数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:ss
SQLite 中唯一有效的日期格式时才有效。
推荐阅读
- java - 如何使用 Java 获取 Mongodb ArrayList 中的其他对象?
- c++ - CWindowImpl 是否使用 CRTP 来调用 windows 过程?
- android - Xamarin.Forms/Android GoogleSignInAPI 登录卡在一段时间后加载
- django - 用于 Google 登录的 Django API
- macos - 尝试通过 MacOS 终端运行 Unix-exec 文件会导致“zsh: exec format error”
- python - 具有全局变量的多线程python循环
- powershell - 如何在字符编码、输入和输出流、引用和转义方面稳健地调用 PowerShell CLI?
- c# - 在日志文件中显示相关数据
- json - 我正在使用滚动视图来显示我正在通过 JASON 文件解析的数据,但是我想显示图像本身而不是图像 url
- json - 如何在 Laravel Blade 中对 json 响应进行分页