首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询帮助-在startdate和enddate之间选择

SQL查询帮助-在startdate和enddate之间选择
EN

Stack Overflow用户
提问于 2012-07-05 13:55:04
回答 3查看 3.9K关注 0票数 2

需要三个sql查询的帮助。

我们的数据库包含以下信息-给定的示例

代码语言:javascript
复制
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天内的所有包裹,但不是其中之一/或

结果-无

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2012-07-06 01:26:26

有时看似复杂的问题可以有非常简单的答案。尝试以下操作:

1)

代码语言:javascript
复制
SELECT *
FROM PackageTbl
WHERE :MyDate BETWEEN StartDate-7 AND EndDate

2)

代码语言:javascript
复制
SELECT *
FROM PackageTbl
WHERE :MyDate BETWEEN StartDate-14 AND StartDate-8

3)我不太理解这个查询的预期结果,下面的查询应该返回Package 1和Package 2( and部分可能不是必需的,只是一些数据库服务器可能需要的预防措施):

代码语言:javascript
复制
SELECT *
FROM PackageTbl
WHERE :MyDate BETWEEN StartDate-7 AND EndDate-14
  AND EndDate >= StartDate+7
票数 2
EN

Stack Overflow用户

发布于 2012-07-05 14:28:45

你可以使用

代码语言:javascript
复制
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"
票数 0
EN

Stack Overflow用户

发布于 2012-07-05 14:34:40

问题1-

代码语言:javascript
复制
declare @dte date='05-11-2012';
select * from Holiday_Package
where startdate <=  DATEADD(d,7,@dte)  
and enddate >= @dte

问题2--

代码语言:javascript
复制
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-

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11338495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档