ios - SQLite Datetime 24小时前查询

标签 ios objective-c sqlite datetime fmdb

我有一个数据库表并存储一个包含 UTC 日期时间的日期时间列,iOS [NSDate date] 始终返回 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 变量之后具有日期的所有数据。调试消息显示正确的值,例如[NSDate date] now before 24 hours is, Date before 24 hours: 2015-04-06 15:28:08 +0000,所以我应该得到 al使用上述查询,直到 2015-04-07 15:28:08 +0000 为止的记录,但我没有。

通过 SQLite Studio,我向您提供我目前在数据库中拥有的记录。

Records in SQLite

最佳答案

您不需要 Datetime() 函数。 (即使您这样做了,也永远不会将 ? 放在引号内。)

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

底线,您应该能够使用:

SELECT * FROM %@ WHERE %@ >= ?

关于ios - SQLite Datetime 24小时前查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29495367/

相关文章:

ios - 如何在进度更改时更改 UIProgressView 颜色

iOS - UIScrollView 中的按钮点击动画

ios - 适用于 iOS 的 sqlite 数据库管理器

iphone - iOS 应用程序和 Rails 网络服务之间的持久连接

ios - 当更改 Root View Controller 时,初始 View Controller 显示一秒或半秒

ios - 使 UICollectionView 看起来像 iOS 日历应用程序的最佳方法

ios - 尝试编写一个谓词来与一对多关系的第一个对象进行比较

objective-c - 在 UIImage 中编辑颜色字节

python - 日期时间表示存在 SQLAlchemy + SQLite "create_function"问题

java - SQLite中如何连接三个表?