当插入新记录时,我将 Calendar.getTime() 的值存储在名为“已创建”的 SQLite 数据库字段中。
该字段是“日期时间”,它以这种格式存储值:EEE MMM dd HH:mm:ss z yyyy。
我的应用程序有 2 个日期选择器,因此您可以选择开始和结束日期/时间来创建范围 - 我需要做的就是运行查询以返回在此时间跨度内创建的记录,但这让我很头疼!
我的查询是这样的:
public Cursor GetAllByDateRange(Date dtStart, Date dtEnd) {
return database.query(DATABASE_TABLE, new String[] {
KEY_id, KEY_CREATED, KEY_VALUE, KEY_DESCRIPTION, KEY_ISEXPENSE},
KEY_CREATED + " BETWEEN '" + dtStart + "' AND '" + dtEnd + "'",
null, null, null, KEY_CREATED + " DESC");
}
我想我理解了这个问题,但不知道如何解决它,我相信这种方法不会起作用,因为 SQLite 以字符串格式存储日期(如果这是真的,我不确定为什么他们甚至有 Date' 类型!) , 所以他们被比较为字符串而不是日期..
看来我的选择有限,因为我需要记录时间和日期,今天大部分时间都在网上搜索我完全不知所措 - 谁能建议我如何继续前进?
谢谢!
最佳答案
如果可能,将您的日期作为整数存储在数据库中,存储来自 date.toTime() 的毫秒值。然后从 new Date(milliseconds) 实例化一个日期对象就容易多了,然后您可以根据语言环境格式化输出。
关于Android - 日期时间字段 hell ! - 好吧,反正看起来是这样! :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6960681/