根据sqlite的最后几小时获取数据

时间:2015-10-21 08:50:55

标签: sqlite android-sqlite

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

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

查询:

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

其中Table1是我的表名,而Date是DATETIME类型的coloumn名称

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

enter image description here

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

enter image description here

我不想要。

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

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

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

对问题1使用此查询 -

`select * from Table1 where(Date between '(Select Date from Table1 order by Date asc limit 1)' and 'date1');`

date1应该是格式yyyy-MM-dd hh:mm:ss(例如2015-10-21 08:00:00)。 在date1中,您可以在1小时之前放置日期。

它在SQLite Manager中工作。

问题2 - 您必须使用以下查询分别获取每小时的数据

select * from Table1 where(Date between 'date1' and 'date2'); 

答案 1 :(得分:0)

最后,我找到了自己的问题的解决方案

以下是适用于我的代码

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;

    }

 }

我希望将来可以帮助某人