我在Android中使用SQLITE数据库。
创建表查询是:
String CREATE_TBookOrder = "CREATE TABLE IF NOT EXISTS BookOrder (" +
" `OrderId` INTEGER ," +
" `OrderDate` DATE ," +
" `OrderTotal` DOUBLE " +
")";
我正在尝试使用以下查询在日期之间获取数据:
SELECT OrderId , OrderTotal FROM BookOrder
WHERE OrderId = 55 AND ( OrderDate BETWEEN '2018-01-01' AND '2018-12-12')
但我收到零记录作为回应。
我的获取数据的代码是:
String queryStr = "SELECT OrderId , OrderTotal FROM BookOrder WHERE OrderId = 55 AND ( OrderDate BETWEEN '2018-01-01' AND '2018-12-12')";
sqLiteDatabase = this.getWritableDatabase();
cursor = sqLiteDatabase.rawQuery(queryStr, null);
if (cursor.moveToFirst()) {
do {
Log.d("data", "sub OrderId " + cursor.getInt(0));
Log.d("data", "sub OrderTotal " + cursor.getFloat(1));
Log.d("data", "--------------");
} while (cursor.moveToNext());
}
sqLiteDatabase.close();
这在SQL Server上运行顺利但在SQLITE Android中没有成功运行。
答案 0 :(得分:0)
假设日期以yyyy-mm-dd格式存储为字符串,那么您需要通知查询您正在处理查询中的日期。
所以而不是: -
SELECT OrderId , OrderTotal FROM BookOrder
WHERE OrderId = 55
AND ( OrderDate BETWEEN '2018-01-01' AND '2018-12-12')
您可以使用: -
SELECT OrderId , OrderTotal FROM BookOrder
WHERE OrderId = 55
AND (date(OrderDate) BETWEEN date('2018-01-01') AND date('2018-12-12'))
答案 1 :(得分:-1)
我读了你的问题,我认为有日期DataType的问题。请检查此link,也许它可以解决您的问题。
答案 2 :(得分:-1)
解决它后尝试了很多选项。 对我有用的是, 首先,我将日期列的数据类型更改为DATETIME。 然后在将日期插入列之前,我将其转换为yyyy-MM-dd hh:mm:ss格式。
在检索日期时,我使用了以下查询,
SELECT OrderId,OrderTotal FROM BookOrder 在哪里OrderId = 55 AND(OrderDate BETWEEN' 2018-01-01' AND' 2018-12-12')
其中第一个日期为包含日期,第二个日期为独家日期。