テーブルに DATE データ型の列があります。時刻なしで日付のみを比較したい述語を設定したい。日時が原因で、適切な結果が得られません。
私の現在のコード -
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"((install_date > %@) AND (install_date <= %@))", fromDate,toDate]]
テーブルに DATE データ型の列があります。時刻なしで日付のみを比較したい述語を設定したい。日時が原因で、適切な結果が得られません。
私の現在のコード -
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"((install_date > %@) AND (install_date <= %@))", fromDate,toDate]]
この関数を使用して NSDate から時間を取り出します
+(NSDate *)dateWithOutTime:(NSDate *)datDate
{
if( datDate == nil ) {
datDate = [NSDate date];
}
NSDateComponents* comps = [[NSCalendar currentCalendar] components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:datDate];
return [[NSCalendar currentCalendar] dateFromComponents:comps];
}
私の提案は、一致するすべての値を取り出し、時間のない日付を比較してそれに応じてフィルタリングすることです.
私はこのソリューションを使用して、時間のない日付のみを比較しています。この場合、日付形式は yyyy-MM-dd です。
NSDateFormatter * formatter = [NSDateFormatter new];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSString * dateString = [formatter stringFromDate:[NSDate date];
NSDate *rdate = [formatter dateFromString:dateString];
NSPredicate *datePre = [NSPredicate predicateWithFormat:@"date = %@", rdate];