2012-02-08 8 views
0

指定した年に属していないすべてのエントリをフィルタリングするためにDataView.RowFilterを使用しようとしています。私のコードは次の通りです:DateTime Year限定のRowFilter条件を追加する

bigDT.DefaultView.RowFilter = "year(date_posted)=2011"; 

これはうまくいきません。私は "#mm/dd/yyyy#"のような書式を使ってDateTimesを指定できると読んでいます。

ユーザーが年、またはノー年、または月、または日を指定することができるように私は、年のみチェックすることができれば、私は

ありがとうなど、好むと思います。

答えて

0

ドキュメントの列名が「年」で、その列のフィールドがテキストまたはdatetimeであることを確認してください。日時の場合は、具体的にする必要があります。おそらく日付、時刻などを含める必要があります。テキストの場合、defaultview.rowfilter = "year = 2011"にする必要があります。

+0

列名はdate_postedで、DateTimeオブジェクトです。 DateTimeオブジェクトから年を抽出する方法はありませんか? – omniholy

+0

わかりません。 datetime.tostring()(すべてのフォーマットテキストを使用)を使用してのみ、datetimeを1年にフォーマットすることができます。ウェブ上で日時フォーマットを読む。それはフォーマットを使用してそれを完了する必要があります。日時は手間がかかり、ユーザーは非常に具体的である必要があります。それ以外の場合は手動でdatetime.yearのようにフィルタリングし、ループして自分で取得します。 – iefpw

2

有効期限はexpressionsです。

あなたは、私は、これはそれを行うには良い方法であるとは言わないよ

"date_posted > #1/1/2011# AND date_posted < #12/31/2011#" 
+0

はい、これが唯一の解決策のようです。ありがとうございました。 – omniholy

2

ような何かを行うことができますが、道ますできそれがこれです行います

だことdate_posted列を文字列に変換し、4桁の日付を抽出し、それを整数に変換し、等価を2012と比較します。 CONVERTSUBSTRINGの機能は、DataColumn.Expression propertyに記載されています。

ドキュメントでは言いませんが、CONVERT(date_posted, 'System.String')はあなたの現在のカルチャに短い日付パターンを使用していると想像しています。私のケースでは、年は文字オフセット5-8でした。 Anurag Ranjhan's answerは確かにこれがどれほど冗長で、フォーマットされた文字列を解析することに依存している方が良いですが、これはもう1つの方法であり、動作します。

関連する問題