我如何比较TIMESTAMP类型的数据库中的NSDate?

时间:2011-02-16 08:03:39

标签: sqlite ios4 timestamp nsdate nsdateformatter

在我的sqlite数据库中,我有一个名为datekey的列,类型为TIMESTAMP。

我如何匹配两个时间戳?

我正在使用它:

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

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

其中date的类型为NSDate。

但是我可以在我的数据库中看到26 feb的时间戳值是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 个答案:

答案 0 :(得分:1)

如果是无符号整数,日期或时间戳,则应使用%lu,如果是NSTimeInterval,则应使用%f作为NSTimeInterval是双精度。