Android 如何在SQLite中将毫秒转换为日期

Android 如何在SQLite中将毫秒转换为日期,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我将Calendar.getTimeInMillissions()中的日期存储在SQLite数据库中。 我需要在SELECT语句中每月标记第一行,所以我只需要使用SQLite函数将时间(以毫秒为单位)转换为任何日期格式。如何避免这种情况?Datetime需要epochtime,即以毫秒为单位传递的秒数。转换为秒并应用 SELECT datetime(1346142933585/1000, 'unixepoch'); 你能从这把小提琴上证实这一点吗 其中一个是Unix时间戳,即自1970年以来的

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

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

SELECT datetime(1346142933585/1000, 'unixepoch');
你能从这把小提琴上证实这一点吗

其中一个是Unix时间戳,即自1970年以来的秒数。 要将毫秒转换为毫秒,只需除以1000

然后使用一些获取年份和月份:

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

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

  • 在查询中转换毫秒,如下所示
    从表1中选择日期(milliscolumn/1000、'unixepoch'、'localtime')
  • 将毫秒转换为秒,然后保存到db,然后在sql查询中使用日期函数

这应该是正确答案,因为如果没有localtime参数,时间是不正确的(GMT正在处理中)。请参阅@bsvtag提供的以下答案。其中包括
'localtime'
@Mikitz06这些毫秒时间戳定义为UTC。结果是UTC还是在某个本地时区取决于应用程序。您就是maannn!!你是指UTC中的日期,还是特定时区中的日期?这个查询对我帮助很大。现在,我可以通过将表中的日期与最后15秒进行比较来获取最后15秒的记录,如下图所示
从您的表中选择不同的abc,时间(单位:毫秒)作为createdDate,其中datetime(时间(单位:毫秒/1000,'unixepoch')>=时间('Now','localtime','-15秒')按时间(单位:毫秒)顺序排列