加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Android – SQLite – SELECT BETWEEN Date1和Date2

发布时间:2020-12-15 05:10:22 所属栏目:Java 来源:网络整理
导读:Mac OS-X Android的 Eclipse与ADT SQLite的 我是创建Android应用程序的新手,我对此进行了大量研究,但我无处可去.我需要查询我的SQLite数据库以返回2个日期之间的所有行.到目前为止,我从我的研究中学到的是Androids SQLite数据库中没有DateTime列,我必须将其
Mac OS-X

Android的

Eclipse与ADT

SQLite的

我是创建Android应用程序的新手,我对此进行了大量研究,但我无处可去.我需要查询我的SQLite数据库以返回2个日期之间的所有行.到目前为止,我从我的研究中学到的是Androids SQLite数据库中没有DateTime列,我必须将其保存为文本列.但我认为问题在于尝试比较字符串,但我无法找到解决方法.这是我的代码:

DB = currentContext.openOrCreateDatabase(DBName,null);
DB.execSQL("CREATE TABLE IF NOT EXISTS " + tableName + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,Date VARCHAR(40),Hours INT(3));");

我没有收到任何错误,但我没有从RawQuery返回任何结果.这是我的代码:

Cursor c = newDB.rawQuery("select ID,Date,Hours from " + tableName + " where Date BETWEEN '" + date1 + " 00:00:00' AND '" + date2 + " 99:99:99'",null);

if (c != null ) {
  Log.d(TAG,"date1: "+date1);
  Log.d(TAG,"date2: "+date2);
  if  (c.moveToFirst()) {
     do {
        int id = c.getInt(c.getColumnIndex("ID"));
        String date1 = c.getString(c.getColumnIndex("Date"));
        int hours1 = c.getInt(c.getColumnIndex("Hours"));
        results.add(+ id + "    Date: " + date1 + "    Hours: " + hours1);
     }
         while (c.moveToNext());
      }
}

我也尝试了以下声明,但它们也没有产生结果:

Cursor c = newDB.rawQuery("select ID,Hours from " + tableName + " where Date BETWEEN " + Date(date1) + " AND " + Date(date2) + "",null);

我从其他StackOverflow答案得到了这个声明,但我找不到有关date()方法的任何文档.我不确定它现在是否已经过时,但我得到错误说“类型(类名)的日期(字符串)方法未定义”,我尝试导入一些JAVA库.

有没有人知道创建rawData()查询的正确方法,该查询将获取所选日期之间的行?

更多信息,这些是我的INSERT语句和进入数据库的日期格式:

newDB.execSQL("INSERT INTO " + tableName + " (Date,Hours) Values ('" + ph_date + "'," + hours + ");");
String date1 = "12/1/13"
String date2 = "25/1/13"

解决方法

好的,所以我无法使用字符串日期,所以我必须将字符串日期转换为日历日期到Unix时间,然后再将它们添加到SQLite数据库并在显示它们时将它们转换回(Unix时间到日历日期到字符串). Unix Time允许在日期列上完成计算(按顺序排序,升序排序,等等),这是长时间试用和错误后使用的最佳方法.这是我最终使用的代码:

Cursor c = newDB.rawQuery("select ID,Hours from " + tableName + " where Date BETWEEN '" + startDateQueryDate + "' AND '" + endDateQueryDate + "' ORDER BY Date ASC",null);

            if (c != null ) {
                if  (c.moveToFirst()) {
                    do {
                        int tempId = c.getInt(c.getColumnIndex("ID"));
                        long tempUnixTime = c.getLong(c.getColumnIndex("Date"));

                        //convert tempUnixTime to Date
                        java.util.Date startDateDate = new java.util.Date(tempUnixTime);

                        //create SimpleDateFormat formatter
                        SimpleDateFormat formatter1;
                        formatter1 = new SimpleDateFormat("dd/MM/yyyy",Locale.UK);

                        //convert Date to SimpleDateFormat and convert to String
                        String tempStringStartDate = formatter1.format(startDateDate);

                        int tempHours = c.getInt(c.getColumnIndex("Hours"));
                        results.add(+ tempId + "    Date: " + tempStringStartDate + "    Hours: " + tempHours);
                    }while (c.moveToNext());
                }
            }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读