2

重複の可能性:
Sqlite データベースで日付を並べ替える

SQLite データベースを使用した iPhone アプリケーションを作成しています。これには、3 つの列を含むテーブルがあり、1 つの列はデータ型の "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' は日付値を保持する文字列値です。では、DB から列全体からデータを取得するにはどうすればよいでしょうか? 私が使用したクエリは、

select * from ItemTable  order by ReleaseDate desc

しかし、ソートは行われません。

4

3 に答える 3

2

DateTime と呼ばれる SQLite の日付の形式があるはずです。文字列ではなく、日付をそれにフォーマットしてみてください。

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 に答える