0

iPhoneアプリケーションで先週のレコードを表示し、以前のレコードを削除したい。

だから私は1週間後の日時を使用して取得しています、

//Now
nowDate = [entryDateFormat stringFromDate:[NSDate date]];

//1 week previous
weekDate = [entryDateFormat stringFromDate:[[NSDate date] dateByAddingTimeInterval: -604800.0]];

次に、次のようなSQLクエリを実行します

NSString *selectSQL = [NSString stringWithFormat:@"SELECT * FROM tblTest Where Time between \"%@\" and \"%@\"", weekDate, nowDate];

したがって、Queryの値を取得する::

SELECT * FROM tblTest Where Time between "04-02-2013 17:20:36" and "11-02-2013 17:20:36";

以前のレコードを削除する場合と同じ

Delete FROM tblTest Where Time < "04-02-2013 17:20:36";

したがって、現在の日付の1日、2日、3日のみ機能します。
「30-01-2013」や「31-01-2013」などの前月の日付では実行されません。

私もこれを試しました:

Delete FROM tblTest Where Time < DATE('now','-7 days');

しかし、結果はありません。:(

sqlite側の関数とは何ですか?これらの関数に基づいて操作を実行し、先週のレコードの正確な値を取得できます。

この状況のた​​めに私を助けてください。

前もって感謝します。

4

2 に答える 2

0

まず、
セーブ時は、

NSTimeInterval currentTimeStamp = [[NSDate date] timeIntervalSince1970];
NSNumber *currentTimeStampObj = [NSNumber numberWithDouble: currentTimeStamp];

[currentTimeStampObj retain];

これを新しい「エントリ時間」フィールドとしてデータベースに保存します。

データ表示中&前データ削除

//Date Formatter
NSDateFormatter *entryDateFormat;

//Now Date & Previous Date
NSString *nowDate, *weekDate;

NSNumber *currentNowTimeStamp, *pastWeekDateTimeStamp;

//Today
nowDate = [entryDateFormat stringFromDate:[NSDate date]];

NSTimeInterval currentTimeStamp = [[NSDate date] timeIntervalSince1970];
currentNowTimeStamp = [NSNumber numberWithDouble:currentTimeStamp];

[currentNowTimeStamp retain];

NSLog(@" Time :::: %@", currentNowTimeStamp);

//Past Week Date
weekDate = [entryDateFormat stringFromDate:[[NSDate date] dateByAddingTimeInterval: -604800.0]];

currentTimeStamp = [[[NSDate date] dateByAddingTimeInterval: -604800.0] timeIntervalSince1970];
pastWeekDateTimeStamp = [NSNumber numberWithDouble: currentTimeStamp];

[pastWeekDateTimeStamp retain];

NSLog(@" Past Week Time :::: %@", pastWeekDateTimeStamp);

クエリ ::

NSString *deleteSQL = [NSString stringWithFormat:@"Delete FROM tblTest Where entry time < \"%@\"", pastWeekDateTimeStamp];

結果 ::Delete FROM tblTest Where entry time < "1360392911.010868"

NSString *selectSQL = [NSString stringWithFormat:@"SELECT * FROM tblTest Where Time between \"%@\" and \"%@\"", pastWeekDateTimeStamp, currentNowTimeStamp];

結果 ::SELECT * FROM tblTest Where entry time between "1360392911.010868" and "1360997711.010534"

そして、私が望んでいた正確な解決策を得ました。

乾杯..!!

幸せなコーディング..

于 2013-02-16T06:58:38.293 に答える
0

SQLite では、タイムスタンプは最初に年フィールド、つまり形式で格納する必要がyyyy-mm-dd hh:mm:ssあります。

于 2013-02-11T12:41:17.830 に答える