2012-05-24 2 views
2

Можно создать дубликат:
Sort the date in Sqlite databaseКак отсортировать базу данных sqlite на основе даты?

Я создаю приложение iPhone, которая использовала базу данных SQLite. В этом случае у меня есть таблица, содержащая три столбца, а один столбец - «ReleaseDate» с типом данных DATE. Я хочу сортировать базу данных относительно дат в этом столбце. Я использовал следующий код. Для вставки,

NSDateFormatter *format = [[NSDateFormatter alloc]init]; 
    [format setDateFormat:@"MM/dd/yyyy"]; 
    NSDate *dateFromString = [[NSDate alloc] init]; 
    dateFromString = [format dateFromString:date]; 
    [format release]; 
    NSTimeInterval timeInterval = [dateFromString timeIntervalSince1970]; 

    sqlite3_bind_double(insertStmt, 4, timeInterval); 

здесь, «дата» является строкой, которая содержит значение даты. Теперь, как я могу получить данные из целых столбцов из БД? запрос, который я использовал,

select * from ItemTable order by ReleaseDate desc 

но сортировка не сделан.

+0

FYI: если вы используете типы Foundation весь путь вниз по стеку, вы можете посмотреть в NSSortDescriptor. В общем, это хороший способ сортировки массивов структурированной информации. –

ответ

0

Используйте как это: выберите * от ItemTable ORDER BY ReleaseDate ASC/DESC

-1

При вставке использования данных следующий код.

NSString *strTimeStamp = [NSString stringWithFormat:@"%lf",[[NSDate date] timeIntervalSince1970]]; 

Вставить strTimeStamp в базу данных.

Когда вы получаете данные, пожалуйста, используйте следующие функции

NSTimeInterval timeInterval= [self intervalBeforeDays:2]; 

NSString *query = [NSString stringWithFormat:@"Select * from pictures where date >= %lf",timeInterval]; 



- (NSTimeInterval)intervalBeforeDays:(NSInteger)day{ 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *dateComponents = [gregorian components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:[NSDate date]]; 
    NSInteger iday = [dateComponents day]; 
    NSInteger iEarlierDay = iday -day; 
    dateComponents.day = iEarlierDay; 
    NSDate *date = [gregorian dateFromComponents:dateComponents]; 
    NSTimeInterval interval = [date timeIntervalSince1970]; 
    [gregorian release]; 
    return interval; 

} 
Смежные вопросы