If I have 2 date columns in a table, startDate
and endDate
. How do I return rows where a given date fits between those 2 dates? For example:
With SQL Server it's actually as simple as:
SELECT startDate, endDate
FROM YourTable
WHERE '2012-10-25' between startDate and endDate
Check BETWEEN keyword.
Syntax is simple:
SELECT col1, col2
FROM table1
WHERE date_col BETWEEN '2012-10-25' and 2012-10-28
for other lappingcheck the following might be interesting
Select * from sted where [dbo].[F_LappingDays](Startdate,EndDate,'20121025','20121025')=1
CREATE Function [dbo].[F_LappingDays](@Von1 datetime,@bis1 Datetime,@von2 Datetime,@bis2 Datetime) Returns int as
/*
20110531 Thomas Wassermann
Terminüberschneidungen finden
*/
begin
Declare @Result int
Select @Result = 0
if (@Von1>=@Von2) and (@bis1<=@Bis2)
begin
Select @Result=Cast(@Bis1 - @von1 + 1 as Int)
end
else if (@Von1<=@Von2) and (@bis1 > @Von2) and (@bis1<=@Bis2)
begin
Select @Result=Cast(@Bis1 - @von2 + 1 as Int)
end
else if (@Von1>=@Von2) and (@von1<=@bis2) and (@bis1>@Bis2)
begin
Select @Result=Cast(@Bis2 - @von1 + 1 as Int)
end
else if (@Von1<@Von2) and (@bis1>@Bis2)
begin
Select @Result=Cast(@Bis2 - @von2 + 1 as Int)
end
Return @Result
end