sqlite3 datetime не работает должным образом на iPhone - PullRequest
0 голосов
/ 14 марта 2010

У меня проблемы с получением 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

1 Ответ

0 голосов
/ 14 марта 2010

Неважно, это была моя ошибка.

Я обновлял строку после того, как это было сделано с

UPDATE `Artists` SET `lastUpdate`='CURRENT_TIMESTAMP';

Когда это должно было быть:

UPDATE `Artists` SET `lastUpdate`=CURRENT_TIMESTAMP;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...