检查给定的日期不位于数据表内的两个现有日期之间

本文关键字:日期 两个 之间 数据表 检查 | 更新日期: 2023-09-27 18:13:34

我有一个表,可以存储学生休假的开始日期和结束日期像这样:

StudentID   Age   startDate   EndDate
1           14    5/05/2013   7/05/2013   
4           17    4/04/2012   8/10/2012

我需要检查一下申请的新假期是否不属于该学生已经安排的假期范围。例如,对于ID = 1的学生,他们应该不能申请2013年6月5日开始的假期。

我正在使用c#,正在寻找使用SQL或LINQ的解决方案。

检查给定的日期不位于数据表内的两个现有日期之间

normal SQLSelect count(*) from table where StudentID =' parameterID' and startDate <=' Parameter_StartDate' and EndDate <='Parameter_EnsDate';

DateTime dtApplied;
var allDates = yourDt.Rows.Cast<DataRow>().Where(x => dtApplied >= x.Field<DateTime>("startDate") && dtApplied <= x.Field<DateTime>("endDate"));

然而,如果我是你,我会考虑在SQL中使用BETWEEN

你可以试试:

  var result = dt.AsEnumerable().Where(r =>((int)r["StudentID"])==stdID &&
                                       (DateTime)r["startDate"]<=yourStartDate &&
                                       (DateTime)r["EndDate"]=YourEndDate))
                                       .FirstOrDefault();

或者你也可以这样做:

string query="ID=1 AND startDate<=yourStratDate AND EndDate>=yourEndDate";
DataRow [] dr=dt.Select(strQuery);
select student_id From TableName Where Student_id = 1 and @dateToCheck not( between startdate and enddate)