SQLite按日期范围查询数据库值失败,直接执行SQL正常应如何排查?
SQLite按日期范围查询不生效问题解决方案
以下是你代码的核心问题和对应修正方案:
- 结束日期输入框默认值无效
HTML<input type="date">仅支持YYYY-MM-DD格式的字符串作为value属性值,你设置的value="today"不符合规范,浏览器会判定为无效值。如果用户提交时未手动修改结束日期,request.form.get("end")拿到的要么是空值,要么是异常默认值,自然无法匹配查询结果。
修正示例(前端JS自动赋值当前日期):<input autocomplete="off" id="end_date" autofocus class="form-control" name="end" placeholder="end" type="date"> <script>document.getElementById('end_date').valueAsDate = new Date();</script> - 先排查参数实际取值是否符合要求
执行查询前先打印两个日期参数的实际值,确认是否都是YYYY-MM-DD格式的合法日期,同时确认session["user_id"]的取值和你手动测试时用的user_id=1是否一致:# 调试用代码,确认参数取值 print("start:", request.form.get("start")) print("end:", request.form.get("end")) print("user_id:", session["user_id"]) - 不要手动给参数化占位符加引号
你使用的是参数化查询,:start、:end占位符会自动处理类型转义和引号包裹,手动加引号反而会让参数变成带额外引号的字符串,导致日期匹配失败。
内容的提问来源于stack exchange,提问作者Oris
相关产品推荐
相关产品推荐

