gpt4 book ai didi

android - 两天之间很难从Sqlite数据库中获取数据

转载 作者:行者123 更新时间:2023-11-29 23:37:26 27 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,它可以为当前日期和过去 7 天之间的日期生成销售报告。它工作正常,这是代码:

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR,-7);

String currentDate = new SimpleDateFormat("dd-MM-yyyy").format(new Date());

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

String sevenDayAgo = sdf.format(calendar.getTime());

Cursor weeklyIncome = db.getResult("select sum(price) as total_income from sales where date between '"+sevenDayAgo+"' and '"+currentDate+"'");
Cursor weeklyCost = db.getResult("select sum(purchase_price * quantity) as total_cost from sales where date between '"+sevenDayAgo+"' and '"+currentDate+"'");

例如 currentDate = 31-08-2018sevenDayAgo = 24-08-2018 这一切都很好,但是当我将系统日期更改为第二天时即下个月,currentDate 变为 01-09-2018 查询未从数据库返回任何内容,它应该返回 25-08 之间的记录-201801-09-2018 之间有 7 天。当 7 天在两个不同的月份时,查询以某种方式不起作用。我不知道发生了什么以及如何解决它。

附注sales 表中的 date 列是 TEXT 类型。

最佳答案

问题是您使用的日期格式 (dd-mm-yyyy) 没有按字典顺序排列。字符串 '25-08-2018'比较大于 '01-09-2018' . x BETWEEN y AND z相当于x >= y AND x <= z .对于使用您的格式的该范围内的日期,该条件不成立(请记住,它们只是字符串。sqlite 没有 date type

您应该使用 ISO-8601 格式,例如 yyyy-mm-dd。这些将正确排序 ( '2018-08-25' < '2018-09-01' ) 并允许您使用 sqlite3 date and time functions在他们身上。

关于android - 两天之间很难从Sqlite数据库中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52117163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com