You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:57:04