Как бы я сравнил NSDate из моей базы данных типа TIMESTAMP? - PullRequest
0 голосов
/ 16 февраля 2011

В моей базе данных sqlite у меня есть столбец с именем datekey типа TIMESTAMP.

Как мне сопоставить две метки времени?

Я использую это:

NSString *Sql =@"SELECT ZTIMESLOT,ZAGENDA1,ZAGENDA2 FROM tbl_agenda where tbl_agenda.ZDATEKEY=%d";

NSString *sqlFormated = [NSString stringWithFormat:Sql,date];

где дата имеет тип NSDate.

Но, как я могу видеть в моей базе данных, значение метки времени для 26 февраля составляет 1298678400, что является правильным, но когда я пытаюсь сопоставить вышеуказанный исходный код, тогда значение даты становится 78756944, что завершеноневерно для сравнения.

Пожалуйста, помогите

Мой полный код

-(NSMutableArray*)getAgendaDetail:(NSDate*)date

{

NSMutableArray *DateArr=[[NSMutableArray alloc]init];
sqlite3 *database;

@try
{
    DBSettings *dbSettings = [[DBSettings alloc]init];
    [dbSettings checkAndCreateDatabase];
    DatabaseName=dbSettings.DBName;
    DatabasePath=dbSettings.DBPath;
    [dbSettings release];

    if(sqlite3_open([DatabasePath UTF8String], &database) == SQLITE_OK) {

        // Setup the SQL Statement and compile it for faster access
        const char *sqlStatement;
        //NSString *Sql = @"SELECT * FROM song_info where id_song=%d" ;
        NSString *Sql =@"SELECT ZTIMESLOT,ZAGENDA1,ZAGENDA2 FROM tbl_agenda where tbl_agenda.ZDATEKEY=%lu";
        NSString *sqlFormated = [NSString stringWithFormat:Sql,date];
        sqlStatement=[sqlFormated UTF8String];
        sqlite3_stmt *compiledStatement;
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
            while(sqlite3_step(compiledStatement) == SQLITE_ROW) 
            {
    ---------------------------

получение полного неверного значения для sqlFormatted по сравнению с базой данныхзначение

1 Ответ

1 голос
/ 16 февраля 2011

Если это беззнаковое целое, дата или временная метка, вы должны использовать% lu, если это NSTimeInterval, вы должны использовать% f, так как NSTimeInterval - double.

...