2010-10-03 3 views
3

Там нет функции, как sqlite3_column_date которой мне нужно:Как мне получить дату или дату из строки SQLite3?

int i = 0; 
for (NSString *key in [self valuesWithTypes]) { 
    id value; 
    if ([[[self valuesWithTypes] objectForKey:key] isKindOfClass:[NSString class]]) { 
    value = [[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, i)] autorelease]; 
    } 
    else if ([[[self valuesWithTypes] objectForKey:key] isKindOfClass:[NSNumber class]]) { 
    value = [[NSNumber numberWithDouble:sqlite3_column_double(statement, i)] autorelease]; 
    } 
    else if ([[[self valuesWithTypes] objectForKey:key] isKindOfClass:[NSDate class]]) { 
// value = // WTF 
    } 
    else if ([[[self valuesWithTypes] objectForKey:key] isKindOfClass:[NSData class]]) { 
    value = [[NSData dataWithBytes:sqlite3_column_blob(statement, i) length:sqlite3_column_bytes(statement, i)] autorelease]; 
    } 
    [rowDictionary setValue:value forKey:key]; 
    i++; 
} 

SQLite3 таблицы могут иметь дату/DateTime напечатал столбца. Но как, во имя святого Господа, я могу получить колонку с датой из ряда?

Благодаря

+1

В соответствии с документацией SQLite (http://www.sqlite.org/datatype3.html) нет столбца date/datetime. Получите ваше время datetime в количестве секунд (отметка времени UNIX) и напишите/прочитайте, что с типом данных INTEGER SQLite3 – pmg

+0

@pmg 'sqlite3_column_int64 (statement, i)'? К сожалению, я до сих пор не могу принять комментарий. >. < – 2010-10-03 12:57:28

ответ

4

Согласно SQLite documentation нет столбца даты/даты и времени.

В этой странице три варианта предлагаются:

  • TEXT
  • РЕАЛ
  • INTEGER

TEXT может быть симпатичнее вариант, если вам нужно посмотреть на данные напрямую.
Я никогда не использовал РЕАЛ
Мне нравится INTEGER и UNIX метка время :-)

32-бито UNIX временных метки имеют problem не маячат очень близко (не проблема с 64-битными метками времени), и они не отражают стену -часовое время точно. Если для вас слишком много или слишком мало, время от времени это не проблема, я бы предложил этот вариант.

+0

Большое спасибо! – 2010-10-03 13:16:22