我有一个名为DateColumn的列,它存储创建日期,如下所示:
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之间的日期,而该列还包含“created at”字符串?
我尝试了这个并且它有效,但仅适用于主题中没有日期的列:
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = "DateColumn >= '" + minDate + "' AND DateColumn <= '" + maxDate + "'";
答案 0 :(得分:1)
我认为您的问题是“创建时间”在您的列中。现在你必须为此找到解决方法。你最好还是应该考虑是否有必要“创造于”。如果从数据库中选择这些值(在DataTable中),则可以在select中对其进行子串。
例如(Oracle-Style):
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中的新行,如您在问题中所述。