我在使用 SQLite 的 Android 应用程序上处理日期时遇到了一些问题。 我有几个问题:
- 我应该使用什么类型在 SQLite 中存储日期(文本、整数、...)?
- 鉴于存储日期的最佳方式,我如何使用 ContentValues 正确存储它?
- 从 SQLite 数据库中检索日期的最佳方法是什么?
- 如何在 SQLite 上进行 sql 选择,按日期排序结果?
最佳答案
最好的方法是将日期存储为数字,使用日历命令接收。
//Building the table includes:
StringBuilder query=new StringBuilder();
query.append("CREATE TABLE "+TABLE_NAME+ " (");
query.append(COLUMN_ID+"int primary key autoincrement,");
query.append(COLUMN_DATETIME+" int)");
//And inserting the data includes this:
values.put(COLUMN_DATETIME, System.currentTimeMillis());
为什么要这样做?首先,从日期范围中获取值很容易。只需将您的日期转换为毫秒,然后进行适当的查询。按日期排序同样容易。正如我所包括的那样,在各种格式之间转换的调用也同样容易。底线是,使用这种方法,您可以做任何您需要做的事情,没有问题。读取原始值会有点困难,但它通过易于机器读取和使用来弥补这个轻微的缺点。事实上,构建一个阅读器(我知道那里有一些)相对容易,它会自动将时间标签转换为日期,以便于阅读。
值得一提的是,由此得出的值应该是long,而不是int。 Integer in sqlite可能意味着很多东西,从 1 到 8 个字节不等,但对于几乎所有日期来说,64 位或很长,是有效的。
编辑:正如评论中所指出的,如果你这样做,你必须使用 cursor.getLong()
来正确获取时间戳。
关于android - 在 Android SQLite 中处理日期的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363112/