我正在尝试在我在Android设备上创建的数据库中存储3个值。值为NAME,DATE和TIME。因此我的问题是:当它们插入数据库时,获取和存储当前DATE和TIME值的最佳方法是什么?
到目前为止,我已经确定了两种方法,可以通过在//values.put(TIME, System.currentTimeMillis());
之类的android中进行系统调用,也可以使用像GETDATE()
这样的SQL函数。但是,哪个更好?
如果我朝错误的方向前进,请告诉我并指引我走向正确的方向。
答案 0 :(得分:2)
使用SQL函数将与使用相同SQL引擎的其他工具更兼容。
使用ISO格式YYYY-MM-DD hh:mm:ss.fff
的文字将广泛兼容,并且仍然可以正确排序。
答案 1 :(得分:2)
sqlite docs为这些列类型提供了存储日期的选项:
您可以使用Doug Currie所描述的TEXT,或者您可以使用java.util.Date使用INTEGER。 (我不知道你为什么要使用REAL选项。)
要使用INTEGER,您可以加载和存储类似这样的日期:
// build a date from a Cursor
Date d = new Date(cursor.getLong(DATE_FIELD_INDEX));
// add a date to an SQLiteDatabase
final ContentValues values = new ContentValues();
values.put(DATE_FIELD, d.getTime());
db.insert(TABLE_NAME, null, values);
这在数据库中的可读性较差,但日期(在您的查询中)之间的比较应该更快,因为比较数字比字符串更快。 (虽然我对sqlite的实现知之甚少。)