Mac OS-X
安卓系统
带有ADT的Eclipse
SQLite的
我是创建Android应用程序的新手,但Ive对此进行了深入研究,但是却一无所获。我需要查询我的SQLite数据库以返回2个日期之间的所有行。到目前为止,我从研究中了解到,Android的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()方法的任何文档。我不确定现在是否已经过时,但是我收到错误消息,说“类型(类名)的Date(String)方法未定义”,并且我尝试导入一些JAVA库。
有谁知道正确的方法来创建rawData()查询,该查询将获取选定日期之间的行?
进一步的信息,这些是我的INSERT语句和进入数据库的日期格式:
newDB.execSQL("INSERT INTO " + tableName + " (Date, Hours) Values ('" + ph_date + "'," + hours + ");");
String date1 = "12/1/13"
String date2 = "25/1/13"
好的,所以我无法获得字符串日期,因此我不得不将字符串日期转换为Calendar Dates到Unix
Time,然后再将它们添加到SQLite数据库,并在显示它们时将它们转换回(Unix Time到Calendar Dates到String)。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());
}
}
问题内容: AStringis-aCharSequence。Java库中有许多方法可以接受,因此它们的操作范围更广。某些类具有方法(例如),并且还使用等效方法(例如)实现。 如果我正在编写一个委托给此类的类,并且需要一些文本输入,则可以将输入选择为a 或a 。通过为客户提供更多选择,选择后一种将使类更灵活。但是我看不到有太多这样做的代码:文本参数几乎总是a 而不是a 。使用不利吗?有表现上的打击吗
试图在空手道框架和应用编程接口自动化的Rest保证之间进行选择,包括Rest应用编程接口和图形QL。我们还可以增强框架来执行用户界面自动化 我经历了寻找的一般过程: 空手道专为GraphQL设计:https://stackoverflow.com/a/47469363/143475 空手道和“放心”的比较:https://github.com/intuit/karate#comparison-放心
问题内容: 我在这里找到执行跟踪任务的最惯用的方法。 任务 : 将数据从通道写入文件。 问题 : 我有一个频道 我需要从通道读取并将从通道读取的值写入文件。我的问题基本上是鉴于 如果通道已满,请立即写入值 如果通道未满,则每5s写一次。 因此,从本质上讲,至少需要每5s将数据写入文件一次(假设至少每5s将数据填充到通道中一次) 请告诉我用最好的方式,并做到我上面的任务吗? 谢谢! 问题答案: 没有
桌面视频 我想选择从给定时间间隔6个月的行。新的还是旧的 因此,如果查询时间为例如1446076800,则将选择比该时间早6个月或新6个月的所有行。 采用UNIX TIMESTAMP格式。 因此,如果一个视频是在2015年10月上传的,所有在2015年4月上传的视频和更新的视频都将被选中。从2015年10月到2016年4月的所有视频也将被选中。
问题内容: 为表定义模式之间和之间有什么区别 吗?当使用int主键时,我得到了 东西 。当整数主键,我得到表生成。有什么不同?第一个和第二个变体会产生哪些副作用? 问题答案: 更新:SQLite的ROWID列现在是64位整数: 在SQLite中,类型为INTEGER PRIMARY KEY的列是ROWID的别名(在WITHOUT ROWID表中除外),该别名始终是64位有符号整数。 所有这些都在S
问题内容: 我正在尝试在2列之间选择一个值。这是我的数据集 我的目标是(如果我的值为2)是选择 ID为1 (在from和to之间)的行。所以这是我正在使用的查询: 这是MySQL执行此查询时返回的结果: 我正在寻找的结果如下: 我尝试使用<和>等。但是,我总是得到两个结果。任何帮助将非常感激。 问题答案: 所以,您不希望下限具有包容性,对吗?