Linq2Sqlで2つのDateTime変数を比較する方法で、Time部分を無視する方法はありますか。
アプリはアイテムをDBに保存し、公開日を追加します。私は正確な時間を保ちたいが、それでも日付自体を引き出すことができるようにしたい。
12/3/89 12:43:34と12/3/89 11:22:12を比較し、実際の時刻を無視するようにしたいので、どちらも同じと見なされます。
私は私が比較する前に私は一日の時間を00:00:00に設定することができると思いますが、私は実際に私はちょうど日付だけで比較できるようにしたいだけです。
私は同じ問題を抱えているコードを見つけ、それらは年、月、日を別々に比較します。これを行うより良い方法はありますか?
Date
オブジェクトのDateTime
プロパティを使用してみてください。
if(dtOne.Date == dtTwo.Date)
....
本当の比較のために、あなたは使うことができます:
dateTime1.Date.CompareTo(dateTime2.Date);
これは私がLINQを扱うためにどのようにこれをするかです。
DateTime date_time_to_compare = DateTime.Now;
//Compare only date parts
context.YourObject.FirstOrDefault(r =>
EntityFunctions.TruncateTime(r.date) == EntityFunctions.TruncateTime(date_to_compare));
dtOne.Date == dtTwo.Date
のみを使用する場合、LINQでは機能しません(エラー:指定された型メンバー 'Date'は、LINQ to Entitiesではサポートされていません)
Entity Framework <v6.0を使用している場合はEntityFunctions.TruncateTime
を使用します。Entity Framework> = v6.0を使用している場合はDbFunctions.TruncateTime
を使用します。
Linqクエリ内で使用したいDateTime
クラスプロパティの周りに(EFのバージョンに基づいて)どちらかを使用します。
例
var list = db.Cars.Where(c=> DbFunctions.TruncateTime(c.CreatedDate)
>= DbFunctions.TruncateTime(DateTime.UtcNow));
DateTime dt1 = DateTime.Now.Date;
DateTime dt2 = Convert.ToDateTime(TextBox4.Text.Trim()).Date;
if (dt1 >= dt2)
{
MessageBox.Show("Valid Date");
}
else
{
MessageBox.Show("Invalid Date... Please Give Correct Date....");
}
DateTime? NextChoiceDate = new DateTime();
DateTIme? NextSwitchDate = new DateTime();
if(NextChoiceDate.Value.Date == NextSwitchDate.Value.Date)
{
Console.WriteLine("Equal");
}
NULL可能なDateFieldを使用している場合はこれを使用できます。
DateTime dt1=DateTime.ParseExact(date1,"dd-MM-yyyy",null);
DateTime dt2=DateTime.ParseExact(date2,"dd-MM-yyyy",null);
int cmp=dt1.CompareTo(dt2);
if(cmp>0) {
// date1 is greater means date1 is comes after date2
} else if(cmp<0) {
// date2 is greater means date1 is comes after date1
} else {
// date1 is same as date2
}
DateTime econvertedDate = Convert.ToDateTime(end_date);
DateTime sconvertedDate = Convert.ToDateTime(start_date);
TimeSpan age = econvertedDate.Subtract(sconvertedDate);
Int32 diff = Convert.ToInt32(age.TotalDays);
Diff値は、年齢の日数を表します。値が負の場合、開始日は終了日より後になります。これは良いチェックです。
Join句またはwhere句で、カラムのDate
プロパティを使用します。舞台裏では、これはCONVERT(DATE, <expression>)
オペレーションを実行します。これにより、時間なしで日付を比較できるようになります。