2016-08-02 4 views
0

選択した日付とデータベースの日付を比較し、日付範囲内の値を返しますが、間違った形式を取得する必要があります。データベースの日付形式は、2016-01-02 00:00:00.000(行の1つから)datetimeとdatepickerの値を比較するにはどうすればよいですか?

私は以下のコードを使用していますが、比較することができず、「Stringは有効ではありません日付時刻。"助けて?

protected void RadPushButton1_Click(object sender, EventArgs e) 
    { 
     DateTime startDate = DateTime.Parse(RadDatePickerStart.SelectedDate.ToString()); 
     string s = startDate.Date.ToString("yyyy-dd-MM"); 
     startDate = DateTime.Parse(s+"12:00:00 AM"); 
     // DateTime endDate = DateTime.Parse(RadDatePickerEnd.SelectedDate.ToString()); 
     EMCSettlementManager man = new EMCSettlementManager(); 
     Grid.DataSource = man.GetSTL010(r => EntityFunctions.TruncateTime(r.settlement_date) >= startDate); 
     Grid.DataBind(); 
    } 
+0

どの解析でそのエラーがスローされていますか? –

+2

なぜ 'DateTime'を' String'にキャストして返しますか? DateTimeは表示形式を格納せず、DateTimeの文字列表現だけが行います。 –

+0

既に 'DateTimes'を持っていれば、文字列と' DateTime.Parse'を弄ばないでください。 'DateTime'には' AddHours'のようなメソッドがあります。 –

答えて

0

あなたが日付を比較したい場合は、すべての値がタイプDateTime、ないStringであることを確認してください。

このような何か試してみてください:データベースのフィールドがある場合

DateTime startDate = RadDatePickerStart.SelectedDate.Date; 

:あなたは、時間の部分を取り除きたい場合は、あなたがこのような何かを行うことができ

DateTime startDate = RadDatePickerStart.SelectedDate; 
EMCSettlementManager man = new EMCSettlementManager(); 
Grid.DataSource = man.GetSTL010(r => r.settlement_date >= startDate); 

を文字列型で、datetimeではなく、Date(Time)型に変換してください。どこでも文字列を使うことは悪い選択です。文字通り「文字列型」と呼ばれています。 (参照:https://blog.codinghorror.com/new-programming-jargon/

+0

私はそれを試みましたが、 "暗黙のうちに 'System.DateTime'を変換できませんでしたか? "System.DateTime"に明示的な変換があります(キャストがありません)) "私はyyyyddmmの代わりにyyyymmddのように日付の書式が異なると思ったので、変更する文字列にしようとしました。私がdatepickerに欠けていたものは ".value"でした。 DateTime startDate = RadDatePickerStart.SelectedDate.value; これで動作します。ありがとう! – Scar

関連する問題