SQLite Datetime在24小时之前查询

时间:2015-04-07 15:31:41

标签: ios objective-c sqlite datetime fmdb

我有一个数据库表,并存储一个带有UTC日期时间的日期时间列,iOS [NSDate日期]始终返回UTC日期时间。这一切都很好。

我使用FMDB通过以下代码获取最近12小时和24小时的数据。

[self.fmQueue inDatabase:^(FMDatabase *db)
   {
   NSString* queryCommand = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ >= Datetime('?')", readingsTable, dateTimeRecordedColumn];
   NSDate* dateBefore24Hours = [self.dateUtilities dateBySubtractingDays:1 forDate:[NSDate date]];
   WEELogDebug(@"Date before 24 hours: %@", dateBefore24Hours);
   FMResultSet* result = [db executeQuery:queryCommand, dateBefore24Hours];
   if (completionblock)
      {
      completionblock([self readingsArrayFromResultSet:result]);
      }
   }];

我需要完成的是检索dateBefore24Hours变量之后的所有日期数据。调试消息显示正确的值,例如现在24小时之前的[NSDate日期] Date before 24 hours: 2015-04-06 15:28:08 +0000,所以我应该在2015-04-07 15:28:08 +0000之前使用上述查询得到记录,但是我没有'吨。

使用SQLite Studio,我会为您提供目前在数据库中的记录。

Records in SQLite

1 个答案:

答案 0 :(得分:1)

您不需要Datetime()功能。 (即使你这样做,也不会将?放在引号内。)

当FMDB在参数列表中遇到NSDate对象时,它会自动执行timeZoneForSecondsFromGMT(如果你没有指定dateFormat字符串),所以这个数字表示与您的dateTimeRecorded列进行比较时,可以使用该日期。顺便说一句,这个数值可以在SQLite中作为unixepoch值访问。

最重要的是,您应该只能使用?

SELECT * FROM %@ WHERE %@ >= ?