Android 在SQLite中存储日期并按日期执行搜索
我想在SQLite数据库中插入类似“2013-12-24”的日期。我的要求包括日期搜索功能 查询表-Android 在SQLite中存储日期并按日期执行搜索,android,sqlite,simpledateformat,Android,Sqlite,Simpledateformat,我想在SQLite数据库中插入类似“2013-12-24”的日期。我的要求包括日期搜索功能 查询表- CREATE TABLE IF NOT EXISTS LEAD_TIME_TABLE ( LEAD_TIME_ID INTEGER PRIMARY KEY AUTOINCREMENT, **LEAD_TIME_VALUE DATE NOT NULL,**
CREATE TABLE IF NOT EXISTS LEAD_TIME_TABLE
(
LEAD_TIME_ID
INTEGER PRIMARY KEY AUTOINCREMENT,
**LEAD_TIME_VALUE
DATE NOT NULL,**
LEAD_TIME_TYPE
TEXT NOT NULL);
当我在此表中插入数据时,日期的解析方式类似于从2013-12-24
到
2013年美国东部时间12月24日星期二19:00:00
这是我解析日期的方法:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setTimeZone(TimeZone.getTimeZone("IST"));
Date date = null;
try {
date = dateFormat.parse("2013-12-24");
} catch (ParseException e) {
e.printStackTrace();
}
当我使用以下查询进行搜索时:
select * from lead_time where value between 'Thu Dec 26 13:30:00 EST 2013' and 'Tue Dec 31 13:30:00 EST 2013'
在结果中,我得到了意想不到的结果。如何解决此问题?您可以使用参数化查询:
Date
和DateTime
不在SQLite
中。作为SQLite的创建者,我们应该使用字符串或整数来存储这些类型。您建议的解决方案使用文本
然而,我认为使用字符串而不是整数通常是错误的,特别是如果您想要比较。这里是在讨论同样的问题。您也可以在那里查看推荐的解决方案。我也支持这种方法。对于我的数据库,我使用类型“LONG”(基本上是“INT”)并以epoch millis存储时间。然后,您可以使用日历实例设置查询所需的各种时间间隔的值:
select * from lead_time where value between calendar1.getTimeInMillis() and calendar2.getTimeInMillis();
看起来效果不错,但表格中没有易于阅读的日期。对于快速查询和方便携带的数据,价格低廉。您得到了什么结果?您期望得到什么?胡说。无
bindDate
方法<代码>日期不是SQLite的类型
select * from lead_time where value between calendar1.getTimeInMillis() and calendar2.getTimeInMillis();