【问题标题】:How to convert milliseconds to date in SQLite如何在 SQLite 中将毫秒转换为日期
【发布时间】:2013-06-03 08:31:21
【问题描述】:

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

【问题讨论】:

  • 您是指以 UTC 显示的日期,还是以特定时区显示的日期?

标签: android sqlite android-sqlite


【解决方案1】:

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

  • 在查询中转换毫秒,如下所示
    select date(milliscolumn/1000,'unixepoch','localtime') from table1
  • 在保存到db之前将毫秒转换为秒,然后在sql查询中使用日期函数

【讨论】:

  • 这应该是正确的答案,因为没有localtime参数,时间不正确(正在处理GMT)。
【解决方案2】:

SQLite's supported date/time formats 之一是 Unix 时间戳,即自 1970 年以来的秒数。 要将毫秒转换为毫秒,只需除以 1000。

然后使用一些date/time function 来获取年份和月份:

SELECT strftime('%Y-%m', MillisField / 1000, 'unixepoch') FROM MyTable

【讨论】:

  • 请参阅@bsvtag 的以下回答。那一个包括'localtime'
  • @Mikitz06 这些毫秒时间戳被定义为 UTC。结果是否需要为 UTC 或某个本地时区取决于应用程序。
  • 你是男主!!
【解决方案3】:

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

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

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

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

【讨论】:

  • 这个查询对我帮助很大。现在我可以通过将表中的日期与最后 15 秒的日期进行比较来获取最后 15 秒的记录,例如 select distinct abc, time_in_millis as createdDate from your_table where datetime(time_in_millis/1000, 'unixepoch') >= time('now', 'localtime', '-15 seconds') order by time_in_millis desc;
猜你喜欢
  • 2023-04-06
  • 2019-12-24
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多