java – Android – SQLite – SELECT BETWEEN Date1和Date2
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Android – SQLite – SELECT BETWEEN Date1和Date2,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2814字,纯文字阅读大概需要5分钟。
内容图文
![java – Android – SQLite – SELECT BETWEEN Date1和Date2](/upload/InfoBanner/zyjiaocheng/901/fec9de6c239d4a5dbf9ee864ec59dddd.jpg)
Mac OS-X
Eclipse与ADT
SQLite的
我是创建Android应用程序的新手,我对此进行了大量研究,但我无处可去.我需要查询我的SQLite数据库以返回2个日期之间的所有行.到目前为止,我从我的研究中学到的是Androids SQLite数据库中没有DateTime列,我必须将其保存为文本列.但我认为问题在于尝试比较字符串,但我无法找到解决方法.这是我的代码:
DB = currentContext.openOrCreateDatabase(DBName, 0, 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, Date, 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, Date, 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());
}
}
内容总结
以上是互联网集市为您收集整理的java – Android – SQLite – SELECT BETWEEN Date1和Date2全部内容,希望文章能够帮你解决java – Android – SQLite – SELECT BETWEEN Date1和Date2所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。