title: SQL Server contraints for date ranges
body: <p>I am trying to constrain a SQL Server Database by a Start Date and End Date such that I can never double book a resource (i.e. no overlapping or duplicate reservations).</p>
  
  <p>Assume my resources are numbered such that the table looks like 
   ResourceId, StartDate, EndDate, Status</p>
  
  <p>So lets say I have resource #1. I want to make sure that I cannot have have the a reservation for 1/8/2017 thru 1/16/2017 and a separate reservation for 1/10/2017 - 1/18/2017 for the same resource.  </p>
  
  <p>A couple of more complications, a StartDate for a resource can be the same as the EndDate for the resource. So 1/8/1027 thru 1/16/2017 and 1/16/2017 thru 1/20/2017 is ok (i.e., one person can check in on the same day another person checkouts). </p>
  
  <p>Furthermore, the Status field indicates whether the booking of the resource is Active or Cancelled. So we can ignore all cancelled reservations.</p>
  
  <p>We have protected against these overlapping or double booking reservations in Code (Stored Procs and C#) when saving but we are hoping to add an extra layer of protection by adding a DB Contraint. </p>
  
  <p>Is this possible in SQL Server ? </p>
  
  <p>Thanks in Advance</p>