使用Dataview Rowfilter根据时间筛选记录
本文关键字:时间 筛选 记录 Dataview Rowfilter 使用 | 更新日期: 2023-09-27 17:50:11
是否可以使用属于DataTable的Defaultview的RowFilter属性从该表中获取时间跨度之间的记录。
目的:我想检查Current Time(DateTime.Now.ToString())
是否在数据库表模式中定义的时间内。下方定义了表格的模式
`Name | From | To | JoinedOn |`
其中,From-To是数据库表上的日期时间列。我只想比较datetime列中的时间值,而不是日期。我在下面试了一下,但没有得到结果。dt_Temp.DefaultView.RowFilter = "From < '"+ DateTime.Now.ToString()+"' AND To >'"+ DateTime.Now.ToString()+"'";
有人知道吗?
规格:
.Net Framework 2.0
ViSual工作室2005
Sql server express 2005
我会跳过DefaultView,在DataTable中写一个Linq查询,而不是
var time = DateTime.Now.TimeOfDay;
var q =
from row in dt_Temp.AsEnumerable();
where row.Field<DateTime>("From").TimeOfDay < time && row.Field<DateTime>("To").TimeOfDay > time
select row;
编辑以下是该查询的2.0兼容功能
private static IEnumerable<DataRow> GetRows(DataTable dt_Temp)
{
TimeSpan time = DateTime.Now.TimeOfDay;
foreach (DataRow row in dt_Temp.Rows)
if(((DateTime)row["From"]).TimeOfDay < time && ((DateTime)row["To"]).TimeOfDay > time)
yield return row;
}
我自己的智慧让我大吃一惊:(下面的行过滤器回答了我的查询
"From <= #" + DateTime.Now.ToString() + "# AND To >#" + DateTime.Now.ToString() + "#";