小编典典

从SQLite获取根据过去小时的数据

sql

我想按小时从sqlite数据库中获取记录。以下是我的问题

1)我必须从sqlite提取过去一小时的所有数据。我尝试了以下查询,但它为我提供了当天所有时间的数据

询问:

SELECT * FROM Table1 where Date >= datetime('now','-1 hours')

其中Table1是我的表名,Date是DATETIME类型的列名

例如:数据库中有以下记录

在此处输入图片说明

当我在sqlite firefox浏览器工具中触发查询时,它返回我

在此处输入图片说明

我不想要的。

从数据库获取过去1小时数据的查询应该是什么

2)应该根据每小时查询什么才能从数据库中获取值,就像我必须获取过去1个小时的数据,然后是过去1-2个小时的数据,过去2-3个小时的数据,即一个小时的数据两个小时之间?

任何帮助将不胜感激。


阅读 480

收藏
2021-04-10

共1个答案

小编典典

终于我找到了解决自己问题的方法

以下是对我有用的代码

```
DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date = new Date();
Calendar calendar = Calendar.getInstance();
String startDate = dateFormat.format(date);
String endDate = “”;
for (int i = 1; i <= 24; i++) {
System.out.println(“Start Date:- ” + startDate);
calendar.add(Calendar.HOUR_OF_DAY, -1);
date = calendar.getTime();
endDate = dateFormat.format(date);
System.out.println(“End Date:- ” + endDate);
String data = dbAdapter.getOutDoorHourlyData(startDate, endDate);
System.out.println(“Hourly Average:- ” + data);
startDate = endDate;
endDate = “”;
}

public String getOutDoorHourlyData(String startDate, String endDate) {
double outdoorHourly = 0;

    Cursor cursor = _sqliteDB.rawQuery("Select AVG("
            + COLOUMN_NAME + ") from (Select * FROM "
            + TABLE_NAME + " where " + COLOUMN_NAME + " >= '"
            + endDate + "' and " + COLOUMN_NAME + " < '" + startDate
            + "')", null);

    try {

        if (cursor != null) {
            if (cursor.getCount() > 0) {
                cursor.moveToFirst();
                do {
                    outdoorHourly = cursor.getDouble(0);
                } while (cursor.moveToNext());
            }
            cursor.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    String hourlyData = decimalFormat.format(outdoorHourly);
    hourlyData = hourlyData.replace(",", ".");
    return hourlyData;

}

}
```

希望以后能对某人有所帮助

2021-04-10