У меня проблемы с получением sqlite3 для сравнения между датами и временем. На моем Mac, когда я запускаю SQL-запросы, это работает. Однако на iPhone точно такой же запрос не выполняется.
У меня есть таблица настройки sqlite3 следующим образом:
CREATE TABLE IF NOT EXISTS `Artists` (
`id` int(11) NOT NULL PRIMARY KEY,
`name` varchar(256) NOT NULL,
`lastUpdate` date NOT NULL default CURRENT_TIMESTAMP ,
...
...
);
Я могу вставить художника с:
INSERT OR IGNORE INTO `Artists` (`id`,`name`) VALUES ('1','Justin');
Я пытаюсь найти количество исполнителей, которые не обновлялись в течение последних 2 секунд (чтобы оно было коротким):
SELECT COUNT(*) FROM `Artists` WHERE `id` = ? AND `lastUpdate` < datetime('now','-2 seconds');
На iPhone это возвращает 0. На моем компьютере это возвращает 1. Я ожидаю, что значение будет 1. В чем разница? Я получаю значение по:
-(BOOL) artistNeedsUpdating:(int)artistId
{
[dbLock lock];
BOOL result = NO;
sqlite3_stmt *statement;
const char* query = "SELECT COUNT(*) FROM `Artists` WHERE `id` = ? AND `lastUpdate` < datetime('now','-2 seconds');";
if(sqlite3_prepare_v2(database, query, -1, &statement, NULL) == SQLITE_OK){
sqlite3_bind_int(statement, 1, artistId);
if(sqlite3_step(statement) == SQLITE_ROW){
if(sqlite3_column_int(statement, 0) > 0) // If 0, then we don't need to update
result = YES;
}
sqlite3_finalize(statement);
}
[dbLock unlock];
return result;
}
Меня смущает, почему он работает на одной платформе, а не на другой, у кого-нибудь есть идеи?
Спасибо,
Justin