2

3つの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日間実行されているすべてのパッケージを返すようにします。したがって、この例では、これはホリデーパッケージ5を除くすべてになります。

クエリ2-今日の日付を指定すると、14日以内にあるが7日以内にあるすべてのパッケージが返されます

結果-パッケージ5のみ

クエリ3-今日の日付を指定すると、7日と14日の両方にあるが、どちらかまたは両方ではないすべてのパッケージが返されます

結果-なし

助けてくれてありがとう。

4

3 に答える 3

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
于 2012-07-05T17:26:25.997 に答える
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"
于 2012-07-05T06:28:45.467 に答える
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)
于 2012-07-05T06:34:40.153 に答える