【发布时间】:2022-01-18 21:54:07
【问题描述】:
假设我有一个包含如下表的数据库:CREATE TABLE tbl_EX (_id TEXT, TIME TEXT);
然后我插入一个这样的值:
Date currentTime = Calendar.getInstance(Locale.getDefault()).getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
String time = dateFormat.format(currentTime);
ContentValues contentValues = new ContentValues();
contentValues.put("_id", "SomeID");
contentValues.put("TIME", time);
database.insert("tbl_EX", null, contentValues);
之后,我尝试查询。没有WHERE 子句:
database.query("tbl_EX", new String[]{"_id", "TIME"}, null, null, null, null, "TIME");
它按预期检索了我所有的记录,这些记录显示在 2 TextView 中,如下所示:
_id = SomeID | Time = 2019-03-30 15:00:00
但是,当我使用此 WHERE 子句进行查询时:
database.query("tbl_EX", new String[]{"_id", "TIME"}, "date(TIME) = ?", new String[]{"date('now')"}, null, null, "TIME");
没有找到数据!我什至尝试将部分 new String[]{"date('now')"} 替换为new String[]{"date('2019-03-30')"}或 new String[]{"strftime('%Y-%m-%d', 'now')"} 甚至 new String[]{"'2019-03-30'"},仍然不行。
那么,我是否以正确的方式将 DateTime 数据存储在 SQLite 数据库中?并以正确的方式查询它??
【问题讨论】:
-
如果您确定搜索正确的字符串,您可以尝试设置不相等,但
>或<。您也可以尝试在您知道的任何 SQLite 浏览器中打印date('2019-03-30')或其他句子(参见sqlitebrowser.org)。
标签: java android sqlite date android-sqlite