Flutter中SQFlite日期区间查询无数据返回问题求助
问题解决:日期区间查询无结果的原因及修复
你的问题出在SQL查询中的日期值没有加单引号。因为created字段存储的是字符串类型的日期(YYYY-MM-DD格式),但你写的2022-07-17会被SQL解析成数值运算(2022减7减17,结果是1998),相当于拿字符串和数值1998做比较,自然匹配不到任何记录。
修复方法很简单,给日期字符串加上单引号即可:
方式1:使用BETWEEN子句
final List<Map<String, dynamic>> records = await db.rawQuery( 'SELECT * FROM vehicles WHERE created BETWEEN \'2022-07-17\' AND \'2022-08-16\'' );
方式2:使用>=和<=
final List<Map<String, dynamic>> records = await db.rawQuery( 'SELECT * FROM vehicles WHERE created >= \'2022-07-17\' AND created <= \'2022-08-16\'' );
补充说明:由于你存储的日期是YYYY-MM-DD格式,这种格式的字符串可以直接按字典序进行大小比较,加引号后SQL能正确识别为字符串并完成区间匹配,不需要额外转换日期格式。
内容的提问来源于stack exchange,提问作者Massau
相关产品推荐
相关产品推荐

