C# 如何检查开始时间和结束时间的范围是否属于存储在数据表中的另一个开始时间和结束时间

C# 如何检查开始时间和结束时间的范围是否属于存储在数据表中的另一个开始时间和结束时间,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,在为我的日程安排系统保存一些日程安排后,我需要创建一个代码,该代码将自动检查我的其他日程安排(开始时间+结束时间+同一房间+同一老师)是否在已从数据表保存的其他日程安排范围内 我试图写一个代码,但它有一个问题,在得到的时间范围内,即使房间和老师是不一样的,这算是真的。。。但只有当时间落在同一房间+同一教师的时间范围内时,才应为真 这是我的密码: String str1; str1 = "select * from Scheduling where Timein = '" + DDStartTi

在为我的日程安排系统保存一些日程安排后,我需要创建一个代码,该代码将自动检查我的其他日程安排(开始时间+结束时间+同一房间+同一老师)是否在已从数据表保存的其他日程安排范围内

我试图写一个代码,但它有一个问题,在得到的时间范围内,即使房间和老师是不一样的,这算是真的。。。但只有当时间落在同一房间+同一教师的时间范围内时,才应为真

这是我的密码:

String str1;

str1 = "select * from Scheduling where Timein = '" + DDStartTime.SelectedItem.ToString() + "' OR TimeOut = '" + DDEndTime.SelectedItem.ToString() + "' AND Day ='" + SchedDayDD.SelectedItem.ToString() + "'";

string checkuser6 = "select count(*) from Scheduling where Timein = '" + DDStartTime.SelectedItem.ToString() + "' OR TimeOut = '" + DDEndTime.SelectedItem.ToString() + "' AND Day ='" + SchedDayDD.SelectedItem.ToString() + "'AND RoomNumber = '" + RoomDDSched.SelectedItem.ToString() + "'";

SqlCommand comm6 = new SqlCommand(checkuser6, con);
temp7 = Convert.ToInt32(comm6.ExecuteScalar().ToString());

string checkuser7 = "select count(*) from Scheduling where Timein = '" + DDStartTime.SelectedItem.ToString() + "' OR TimeOut = '" + DDEndTime.SelectedItem.ToString() + "' AND Day ='" + SchedDayDD.SelectedItem.ToString() + "'AND Name = '" + SchedNameDD.SelectedItem.ToString() + "'";

 SqlCommand comm7 = new SqlCommand(checkuser6, con);
 temp8 = Convert.ToInt32(comm7.ExecuteScalar().ToString());
 SqlCommand commms = new SqlCommand(str1, con);
 SqlDataReader reads = commms.ExecuteReader();

 if(temp8 != 0 )
 {
      num9 = 1;
 }

 if (temp7 == 0)
 {
      num10 = 0;
 }
 else
 {
      if (reads.Read())
      {
           tempstart = reads["Timein"].ToString();
           tempend = reads["TimeOut"].ToString();
           tempdays = reads["Day"].ToString();
           num10 = 1;
           reads.Close();
      }

      TimeSpan starts = TimeSpan.Parse(tempstart);
      TimeSpan ends = TimeSpan.Parse(tempend);

      string tempstarttime = DDStartTime.SelectedValue.ToString();
      string tempsendtime = DDEndTime.SelectedValue.ToString();

      TimeSpan nowstart = TimeSpan.Parse(tempstarttime.Remove(tempstarttime.Length - 3));
      TimeSpan nowend = TimeSpan.Parse(tempsendtime.Remove(tempsendtime.Length - 3));

      if (((nowstart > starts) || (nowstart < ends)) || ((nowend > starts) || (nowend < ends)))
      {
           num11 = 1;
      }
 }

 num12 = num9 + num10 + num11;
 reads.Close();

 if (num12 == 3)
 {
      Page.ClientScript.RegisterStartupScript(this.GetType(), "Scripts", "<script>alert('Range Between Time Conflict Detected')</script>");
 }
 else
 {
      //Save to database
 }
字符串str1;
str1=“从调度中选择*,其中Timein='”+DDStartTime.SelectedItem.ToString()+“'或TimeOut='”+DDEndTime.SelectedItem.ToString()+“'和Day='”+SchedDayDD.SelectedItem.ToString()+”;
string checkuser6=“从调度中选择count(*),其中Timein='”+DDStartTime.SelectedItem.ToString()+“'或TimeOut='”+DDEndTime.SelectedItem.ToString()+“'和Day='”+scheddad.SelectedItem.ToString()+“'和RoomNumber='“+RoomDDSched.SelectedItem.ToString()+”;
SqlCommand comm6=新的SqlCommand(checkuser6,con);
temp7=Convert.ToInt32(comm6.ExecuteScalar().ToString());
string checkuser7=“从调度中选择count(*),其中Timein='”+DDStartTime.SelectedItem.ToString()+“'或TimeOut='”+DDEndTime.SelectedItem.ToString()+“'和Day='”+scheddad.SelectedItem.ToString()+”,Name='“+schednameddd.SelectedItem.ToString()+”;
SqlCommand comm7=新的SqlCommand(checkuser6,con);
temp8=Convert.ToInt32(comm7.ExecuteScalar().ToString());
SqlCommand commms=新的SqlCommand(str1,con);
SqlDataReader reads=commms.ExecuteReader();
如果(temp8!=0)
{
num9=1;
}
如果(temp7==0)
{
num10=0;
}
其他的
{
if(reads.Read())
{
tempstart=reads[“Timein”].ToString();
tempend=reads[“TimeOut”].ToString();
tempdays=reads[“Day”].ToString();
num10=1;
reads.Close();
}
TimeSpan start=TimeSpan.Parse(tempstart);
TimeSpan ends=TimeSpan.Parse(tempend);
字符串tempstarttime=DDStartTime.SelectedValue.ToString();
字符串tempsendtime=DDEndTime.SelectedValue.ToString();
TimeSpan nowstart=TimeSpan.Parse(tempstarttime.Remove(tempstarttime.Length-3));
TimeSpan nowend=TimeSpan.Parse(tempsendtime.Remove(tempsendtime.Length-3));
如果((nowstart>开始)| |(nowstart<结束))| |((nowend>开始)| |(nowend<结束)))
{
num11=1;
}
}
num12=num9+num10+num11;
reads.Close();
如果(num12==3)
{
Page.ClientScript.RegisterStartupScript(this.GetType(),“Scripts”,“警报('检测到时间冲突之间的范围');
}
其他的
{
//保存到数据库
}

确定两个元素是否重叠的方法是测试一个元素是否在第二个元素结束之前开始,而第二个元素是否在第一个元素结束之前开始。元素的数据类型是什么并不重要,只要它们有可测量的起点和终点。我已经得到了这个代码中的重叠。问题是,在查询条件中,日期、房间号和教师姓名没有加在一起(checkuser 6和7)。您认为我的代码中存在什么问题?我认为我如何得到数据表中的时间,然后将其与我输入的时间进行比较,始终与我输入的时间相同。我怎样才能得到这种数据?(时间开始或结束+姓名、日期、房间)。提前谢谢