检查给定日期是否位于数据表中的两个现有日期之间

时间:2013-05-14 12:57:27

标签: c# asp.net sql database linq

我有一张桌子可以存储学生请假开始日期和结束日期 像这样:

StudentID   Age   startDate   EndDate

1           14    5/05/2013   7/05/2013   
4           17    4/04/2012   8/10/2012

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

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

普通的SQL    从表中选择count(*),其中StudentID ='parameterID',startDate&lt; ='Parameter_StartDate'和EndDate&lt; ='Parameter_EnsDate';

答案 2 :(得分:0)

你可以试试这个:

  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);

答案 3 :(得分:0)

select student_id From TableName Where Student_id = 1 and @dateToCheck not( between startdate and enddate)