2017-01-27 14 views
1

私は、このように作成日を格納DateColumnという列を持っている:列は、文字列「で作成された」が含まれている間c# - 単語と日付を含む日付列間のデータグリッドビューをフィルタする方法

created at 2017-01-20 
created at 2017-01-21 
created at 2017-01-22 
created at 2017-01-23 
created at 2017-01-24 

は、どのように私は20と24の間の唯一の日付を得ることができますか?

私はこれを試してみました、それが働いただけのテーマでちょうど日付なしの単語の列に:

(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = "DateColumn >= '" + minDate + "' AND DateColumn <= '" + maxDate + "'"; 
+0

DataTableはDatabaseのものですか? – Sebi

+0

DateColumnタイプはvarcharで、minDateタイプはDatetimeですか? –

+0

DateTime値とvarchar列の間で直接比較することはできません。列から日付を抽出してDateTime値と比較する方法を理解する必要があります。 –

答えて

1

私はあなたの問題はあなたの列の中にある「で作成された」ということだと思います。これで回避策を見つける必要があります。あなたは、「作成された」ことが必要であるかどうかを検討すべきです。データベースからこれらの値(DataTable内)を選択すると、選択した値の部分文字列を使用できます。例えば

(Oracleスタイル):

SELECT someValue1, someValue2, TO_DATE(SUBSTR(DateColumn, 10, 10), 'YYYY-MM-DD') DateColumn 
FROM something 

あなた決定的な必要がある場合は、おそらくあなたは日付のみで構成さあなたのDataTableに新しい列を作るべき場合ではないものを、このテキスト。

DataTable yourTable = new DataTable(); 
//Fill with strange strings like 'created at 2017-01-01' 
yourTable.Columns.Add("RealDate"); 

foreach (DataRow row in yourTable.Rows) 
{ 
    //Instead of substr you can also use regex if you prefer 
    row["RealDate"] = Convert.ToDateTime(Substring(row["DateColumn"], 10, 10)); 
} 

私の解決策の後で、あなたの質問に記載されているように、簡単に新しい行をDateTimeにフィルターすることができます。

関連する問題