如何从SQLite中读取与Qt QDateEdit组件匹配的日期条目
问题解决方法
- 首先统一日期存取的格式标准,不要依赖UI组件的
displayFormat做存储转换,避免后续UI调整格式导致存储/查询逻辑失效。推荐统一转成SQLite原生支持的yyyy-MM-dd格式字符串存取:
存数据时修改代码:
查数据时也用同样的格式转换:# 不要用displayFormat做存储转换,固定转成ISO标准日期格式 due_date = self.dateEdit.date().toString("yyyy-MM-dd")query_day = self.dateEdit_2.date().toString("yyyy-MM-dd") # 执行查询时直接用该字符串匹配即可,SQLite可直接识别该格式的日期字符串做比较 cursor.execute("SELECT * FROM 你的表名 WHERE due_date = ?", (query_day,)) - 如果你不想修改已有的存储逻辑,坚持用
MM/dd/yyyy格式匹配,查询时需要用SQLite的strftime函数把存储的日期字段转成对应格式再匹配:day = self.dateEdit_2.date().toString(self.dateEdit_3.displayFormat()) # 注意strftime的格式符要和你的日期格式对应:%m是两位月份,%d是两位日期,%Y是四位年份,/是分隔符 cursor.execute("SELECT * FROM 你的表名 WHERE strftime('%m/%d/%Y', due_date) = ?", (day,)) - 额外注意:不要直接把日期变量拼接到SQL语句里,用参数绑定的方式传值,避免SQL注入风险的同时也能避免格式转义问题。
内容的提问来源于stack exchange,提问作者accpert.com
相关产品推荐
相关产品推荐

