如何根据日期对sqlite数据库进行排序?

时间:2012-05-24 11:30:54

标签: iphone sorting date sqlite

  

可能重复:
  Sort the date in Sqlite database

我正在创建一个使用SQLite数据库的iPhone应用程序。在这里,我有一个包含三列的表,一列是带有DATE数据类型的“ReleaseDate”。我想根据此列中的日期对数据库进行排序。我使用了以下代码。 插入,

    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); 

这里,'date'是一个包含日期值的字符串值。现在,如何从数据库中的整列中检索数据?我使用的查询是,

select * from ItemTable  order by ReleaseDate desc

但未完成排序。

3 个答案:

答案 0 :(得分:2)

SQLite中应该有一个名为DateTime的日期格式。尝试将日期格式化为该日期而不是字符串。

http://metacpan.org/pod/DateTime::Format::SQLite

答案 1 :(得分:0)

使用如下:select * from ItemTable ORDER BY ReleaseDate ASC/DESC

答案 2 :(得分:-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;

}