24

我将 Calendar.getTimeInMilliseconds() 中的日期存储在 SQLite DB 中。我需要在 SELECT 语句中每个月标记第一行,所以我需要仅使用 SQLite 函数将时间以毫秒为单位转换为任何日期格式。我怎样才能避免这种情况?

4

3 回答 3

61

SQLite 支持的日期/时间格式之一是 Unix 时间戳,即自 1970 年以来的秒数。要将毫秒转换为该格式,只需除以 1000。

然后使用一些日期/时间函数来获取年份和月份:

SELECT strftime('%Y-%m', MillisField / 1000, 'unixepoch') FROM MyTable
于 2013-06-07T06:10:30.427 回答
27

Datetime 需要 epochtime,以毫秒为单位传递时的秒数。转换为秒并应用。

SELECT datetime(1346142933585/1000, 'unixepoch');

可以从这个小提琴中验证这一点

http://sqlfiddle.com/#!5/d41d8/223

于 2013-06-07T06:10:07.793 回答
21

您是否需要避免毫秒到日期转换或函数将毫秒转换为日期?由于 sqlite 日期函数适用于秒,因此您可以尝试

  • 在查询中转换毫秒,像这样
    select date(milliscolumn/1000,'unixepoch','localtime') from table1
  • 在保存到db之前将毫秒转换为秒,然后在sql查询中使用日期函数
于 2013-06-07T06:10:34.267 回答