2012-07-05 5 views
2

세 가지 SQL 쿼리에 대한 도움이 필요합니다.SQL 쿼리 도움말 - 시작일과 종료일 사이에서 선택

우리의 데이터베이스는 다음과 같은 정보를 보유 - 주어진 오늘 날짜 (2012년 5월 11일) 다음 칠일 그래서 예를 들면

내에있는 모든 패키지를 반환 - 샘플

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

을 부여 날짜가 05-11-2012 인 경우 다음 7 일 동안 현재 실행중인 모든 패키지를 반환하는 쿼리를 원합니다. 14 일 이내에 거짓말 모든 패키지에 오늘 날짜를 반환 감안할하지만 칠일

결과 - - 패키지 5 만

쿼리 3 그래서 예에서이 5

쿼리 2 휴가 패키지를 제외한 모든 것 - 어떤 도움을 없음

감사합니다 - 감안할 때 오늘 날짜 모든 중 모두 7 및 14 일 이내에 거짓말을하지만 패키지/또는

결과를 반환합니다.

+2

데이터베이스 g SQL Server/mysql/oracle ..? – manurajhada

답변

0

당신은 사용할 수

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

검색어 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) 
2

때로는 복잡한 질문에 아주 간단한 대답이있을 수 있습니다. 다음을 시도해보십시오

1)

SELECT * 
FROM PackageTbl 
WHERE :MyDate BETWEEN StartDate-7 AND EndDate 

2)

SELECT * 
FROM PackageTbl 
WHERE :MyDate BETWEEN StartDate-14 AND StartDate-8 

3) 나는 확실히이 검색어에 대한 예상 결과를 이해하지 못했지만, 다음 쿼리는 패키지 1, 2 반환해야 (AND 부분은 필요하지 않을 수도 있습니다. 일부 데이터베이스 서버에서 요구할 수있는 예방책) :

SELECT * 
FROM PackageTbl 
WHERE :MyDate BETWEEN StartDate-7 AND EndDate-14 
    AND EndDate >= StartDate+7