Android中的SQLite日期查询
我正在为我的应用程序使用SQLite数据库 表结构如下所示:Android中的SQLite日期查询,android,sql,sqlite,Android,Sql,Sqlite,我正在为我的应用程序使用SQLite数据库 表结构如下所示: _id : integer primary key name : text day : date 我能够以以下格式存储日期:dd-mmmmm-yyyy例如2011年6月15日 但当我试图从数据库中检索所有按日期过滤的记录时,它返回null database.query(DATABASE_TABLE, new String[] { "strftime('%d-%mm-%Y',date('now'))","strftime('%d-
_id : integer primary key
name : text
day : date
我能够以以下格式存储日期:dd-mmmmm-yyyy
例如2011年6月15日
但当我试图从数据库中检索所有按日期过滤的记录时,它返回null
database.query(DATABASE_TABLE, new String[] { "strftime('%d-%mm-%Y',date('now'))","strftime('%d-%m-%Y',"+KEY_DAY+")" },
"strftime('%d-%m-%Y',date('now'))=" + KEY_DAY , null,null,null,null,null);
它与anyrow的日期不匹配,即使有一些匹配的日期
我已经阅读了SQLite的文档。但还没有找到任何解决办法
我想要一些像:
select * from table where day=curdate();
如何在SQLite中执行相同的任务?。
(是的,我可以灵活地更改Dateabase中存储的日期格式)
同一任务的其他备选方案有哪些 函数
strftime(“%d-%m-%Y”,date('now'))
以数字格式返回月份字符串(从01到12)。据我所知,没有返回月份全名的格式说明符
我认为您必须使用数字月份说明符而不是名称来存储日期。函数
strftime(“%d-%m-%Y',date('now'))
以数字格式返回月份字符串(从01到12)。据我所知,没有返回月份全名的格式说明符
我认为您必须使用数字月份说明符而不是名称来存储日期。在java编程中,您可以将任何日期格式转换为long(以毫秒为单位的时间)格式,反之亦然。我的观点是,在java中将日期格式化为长格式,然后在数据库中存储日期的长值。在检索时,您还可以检索长值,然后按照预期的日期格式对其进行格式化。我已经在几个应用程序中使用了这种类型的逻辑 谢谢
迪帕克 在java编程中,您可以将任何日期格式转换为long(时间单位为毫秒)和viceversa。我的观点是,在java中将日期格式化为长格式,然后在数据库中存储日期的长值。在检索时,您还可以检索长值,然后按照预期的日期格式对其进行格式化。我已经在几个应用程序中使用了这种类型的逻辑 谢谢
迪帕克 我怀疑字符串“%d-%mm-%Y”中的%mm是否正确。您尝试过这个吗?我认为strftime也不是一个内置的SQLite函数。@Philip Sheard:我在SQLite文档中看到过。我怀疑字符串“%d-%mm-%Y”中的%mm是否正确。您尝试过这个吗?我认为strftime也不是一个内置的SQLite函数。@Philip Sheard:我在SQLite文档中看到过。因此,在将日期存储在数据库?中时,我还必须更改日期格式?。。如果是,哪种格式最好?@Kartik-选项在数据类型文档中描述。我会选择ISO格式的文本或Julian date REAL,因为它们没有Unix时间的限制(在几十年内会溢出32位,在1/1/70之前会出现问题)。因此,在将日期存储在数据库中时,我还必须更改日期格式?。。如果是,哪种格式最好?@Kartik-选项在数据类型文档中描述。我会选择ISO格式的文本或Julian date REAL,因为它们没有Unix时间的限制(在几十年内会溢出32位,在1/1/70之前会出现问题)。