2

可能重复:
对 Sqlite 数据库中的日期进行排序

我正在创建一个使用 SQLite 数据库的 iPhone 应用程序。在这个我有一个包含三列的表,一列是“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); 

这里,'date' 是一个保存日期值的字符串值。现在,我怎样才能从数据库的整个列中检索数据?我使用的查询是,

select * from ItemTable  order by ReleaseDate desc

但排序没有完成。

4

3 回答 3

2

There should be a format for dates in SQLite called DateTime. Try formatting your date to that as opposed to a String.

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

于 2012-05-24T11:34:27.543 回答
0

像这样使用:select * from ItemTable ORDER BY ReleaseDate ASC/DESC

于 2012-05-24T11:38:57.043 回答
-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;

}
于 2012-05-24T18:10:58.053 回答