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

Flutter使用sqflite查询指定日期后所有行及SQL语句问题排查

现有查询语句的问题

  • 索引失效问题:你的日期时间列本身存储的是ISO 8601格式的字符串,天然字典序和时间顺序完全一致,不需要用strftime对列做格式化处理。对查询字段包裹函数会导致该列的索引完全失效,数据量较大时查询性能会大幅下降。
  • 存在SQL注入风险:你当前的写法是直接将具体日期拼接入SQL语句,没有使用参数化查询,可能存在SQL注入漏洞,也容易因为特殊字符导致SQL语法报错。
  • 格式匹配容错性差:如果传入的specific_date格式不是严格的YYYY-MM-DD格式(比如出现2021/8/19这类写法),直接比较会得到错误的查询结果。

正确写法

直接对日期时间列做比较即可,不需要额外格式化:

SELECT * FROM table WHERE <column_name> >= ?

在sqflite中使用参数化查询调用即可:

// 示例:查询所有晚于等于2021-08-19的行
final result = await db.query(
  'your_table_name',
  where: 'your_datetime_column >= ?',
  whereArgs: ['2021-08-19'],
);

如果需要查询严格晚于指定日期(即从指定日期次日零点开始的数据),只需将whereArgs里的日期替换为目标日期的下一天即可,无需修改SQL语句。

内容的提问来源于stack exchange,提问作者bihire boris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:51:03