我有一个数据库表,并存储一个带有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,我会为您提供目前在数据库中的记录。
答案 0 :(得分:1)
您不需要Datetime()
功能。 (即使你这样做,也不会将?
放在引号内。)
当FMDB在参数列表中遇到NSDate
对象时,它会自动执行timeZoneForSecondsFromGMT
(如果你没有指定dateFormat
字符串),所以这个数字表示与您的dateTimeRecorded
列进行比较时,可以使用该日期。顺便说一句,这个数值可以在SQLite中作为unixepoch
值访问。
最重要的是,您应该只能使用?
:
SELECT * FROM %@ WHERE %@ >= ?