将日期和时间存储在 Android 中的 SQLite 数据库中

Store date & time in SQLite database in Android

我对如何在 Android 中的 SQLite 数据库中存储日期 $ 时间有点困惑。 我需要在我的数据库 table.

中存储当前日期和时间

所以:

1) 在我的 table 中创建 date/time 列时使用哪种类型? 2) 如何获取当前 date/time 并根据选择的列类型将其存储到数据库 table 中?

关于第 1 点,有人说要使用文本类型,有人说要使用 int 类型,有人说要使用 datetime.....但是 SQLite 3 建议存储 date/time 如下:

SQLite 3 documentation

我看不出 SQLite 支持日期时间类型。 SQLite 支持的唯一类型是:null、integer、real、text 和 blob(因此此处未列出 datetime)。

所以我不明白为什么here

它说在创建数据库时使用 DATETIME 作为列类型并将默认值设置为 DEFAULT CURRENT_TIMESTAMP table。

以毫秒存储,问题是时区丢失了。在这种情况下,据说要单独保存,我不知道如何摆脱它...

关于第2点),我想到了几种方法....使用DATETIME('now')或System.currentTimeMillis()...但我不知道这是否是最好的方法....

我怎样才能摆脱这个?

文档位于 https://www.sqlite.org/datatype3.html 1.2 日期和时间数据类型 说根据 sqlite 的日期和时间函数的使用,它将日期和时间值存储在几种字段类型中。他们输入你解释过的内容。

此外,文档在 https://www.sqlite.org/lang_datefunc.html 中说您可以使用 DATETIME 函数创建日期时间字符串值。还包括时区。

希望对您有所帮助。我更愿意使用 unix 时间戳和分离的时区值。因为您随后可以更轻松地创建日期对象。

Sqlite 默认保存日期时间为 utc 格式 yyyy-mm-dd hh:mm:ss, 您可以将日期时间类型列中的值保存为当前时间的 current_timestamp。你 可以获取本地时区的日期时间作为查询-

  datetime('now','localtime');// for current time