需要三个sql查询的帮助。
我们的数据库包含以下信息-给定的示例
unique id -- package -- startdate -- enddate
1 -- Holiday Package 1 -- 05-08-2012 -- 05-25-2012
2 -- Holiday Package 2 -- 05-13-2012 -- 06-26-2012
3 -- Holiday Package 3 -- 05-14-2012 -- 05-14-2012
4 -- Holiday Package 4 -- 05-15-2012 -- 05-16-2012
5 -- Holiday Package 5 -- 05-21-2012 -- 07-16-2012查询1-给定今天的日期(2012年5月11日),返回未来7天内的所有包裹
例如,如果日期是2012年5月11日,我希望查询返回当前在接下来的7天内运行的所有包。因此,在本例中,除了Holiday Package 5之外,所有内容都是如此。
查询2-给定今天的日期,返回14天内但不是7天内的所有包裹
结果-仅包5
查询3-给定今天的日期,返回7天和14天内的所有包裹,但不是其中之一/或
结果-无
谢谢你的帮助。
发布于 2012-07-06 01:26:26
有时看似复杂的问题可以有非常简单的答案。尝试以下操作:
1)
SELECT *
FROM PackageTbl
WHERE :MyDate BETWEEN StartDate-7 AND EndDate2)
SELECT *
FROM PackageTbl
WHERE :MyDate BETWEEN StartDate-14 AND StartDate-83)我不太理解这个查询的预期结果,下面的查询应该返回Package 1和Package 2( and部分可能不是必需的,只是一些数据库服务器可能需要的预防措施):
SELECT *
FROM PackageTbl
WHERE :MyDate BETWEEN StartDate-7 AND EndDate-14
AND EndDate >= StartDate+7发布于 2012-07-05 14:28:45
你可以使用
startdate > "given_date" and enddate < "given_date" + 7
startdate > "given_date" + 7 and enddate < "given_date" + 14
Combination of both the above conditions using "and"发布于 2012-07-05 14:34:40
问题1-
declare @dte date='05-11-2012';
select * from Holiday_Package
where startdate <= DATEADD(d,7,@dte)
and enddate >= @dte问题2--
declare @dte date='05-11-2012';
select * from Holiday_Package
where startdate between DATEADD(d,7,@dte) and DATEADD(d,14,@dte)
and enddate >= @dte问题3-
declare @dte date='05-11-2012';
select * from Holiday_Package
where startdate between DATEADD(d,7,@dte) and DATEADD(d,14,@dte)
and enddate between DATEADD(d,7,@dte) and DATEADD(d,14,@dte)https://stackoverflow.com/questions/11338495
复制相似问题