0

我将日期存储在 Android 的 sqlite 数据库中,如下所示:

initialValues.put(KEY_TIME, time.getTime());

其中 time 是 Date 的一个实例(具有正确的时间), KEY_TIME 是一个整数列。

存储后,当我使用如下查询检索它时:

String selectQuery = "SELECT  * FROM " + TABLE_NAME + " order  by date(" + KEY_TIME + ") DESC" ;

我从来没有先得到最近的数据。

我得到了将近 40 岁的虚假时间。我哪里错了?

4

1 回答 1

1

java.util.Date.getTime()返回自 1970 年开始以来的毫秒数(纪元时间)。SQLite 可以处理 Unix 纪元时间,这是相同的值,但以秒表示(请参阅 参考资料java.util.Date.getTime())。

秒和毫秒的不匹配是您看到不正确日期的原因。

您可以将该值除以 1000 以获得 Unix 风格的纪元时间,并将“unixepoch”(参见SQLite 时间和日期函数)指定给 SQLite 的日期函数,例如:

SELECT date(KEY_TIME / 1000, 'unixepoch') FROM TABLE_NAME

如果您使用的是 ajava.sql.Date它是相同的(该类 extends java.util.Date)。

但是,正如 323go 在问题评论中提到的那样,只需直接按 排序KEY_TIME,这将为您提供您正在寻找的排序顺序。

于 2013-08-12T17:37:00.553 回答