如何根据星期几筛选数据库中的数据
本文关键字:数据库 数据 筛选 何根 | 更新日期: 2023-09-27 18:01:53
我的数据库中有一个列,它在不同的工作日为我的联系人保存字符串。
例如:联系人1周一周三上班。
因此,在Week_Day
列中,联系人1的字符串是"Monday, Wednesday"。我试图只显示行谁在一周的当前一天工作,代码如下。我尝试使用IN
条款,但它不工作,因为我没有一个固定的一天,我想过滤的一周。的帮助!
string today = DateTime.Today.ToString("MM-dd-yy");
string day = DateTime.Today.DayOfWeek.ToString();
string find = "select convert(varchar(8), start, 10) AS start, convert(varchar(8), end_date, 10) AS end_date, ContactName, DepartmentName, Hours, Phone, Week_Day from Schedule join Contacts on Schedule.ContactId = Contacts.ContactId inner join Departments on Contacts.DepartmentId = Departments.DepartmentId where @Current BETWEEN start AND end_date AND Week_Day IN (@Day)";
SqlCommand comm = new SqlCommand(find, con);
comm.Parameters.Add("@Current", SqlDbType.Date).Value = today;
comm.Parameters.Add("@Day", SqlDbType.NVarChar).Value = day;
con.Open();
comm.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = comm;
DataSet ds = new DataSet();
da.Fill(ds);
GridView3.DataSource = ds;
GridView3.DataBind();
con.Close();
您可以像这样获取当前星期几(name):
string day = DateTime.Today.ToString("dddd");
然后您可以在WHERE
查询中使用LIKE
。将查询更改为:
WHERE Week_Day LIKE @day
并为@day
添加参数,以在开始和结束时包含%
:
comm.Parameters.Add("@Day", SqlDbType.NVarChar).Value = "%" + day + "%";
关于LIKE的更多信息在这里
注意:正如一些评论已经提到的,最好不要以这种方式将数据存储在单个字符串列中,但我已经根据您的问题回答了
可能使用DateName()和CharIndex()
Where CHARINDEX(DateName(WEEKDAY,GetDate()),Week_Day)>0 and...