이름이 지정된 테이블 Product_Sales
이 있으며 다음과 같은 데이터를 보유하고 있습니다.
Product_ID | Sold_by | Qty | From_date | To_date
-----------+---------+-----+------------+-----------
3 | 12 | 7 | 2013-01-05 | 2013-01-07
6 | 22 | 14 | 2013-01-06 | 2013-01-10
8 | 11 | 9 | 2013-02-05 | 2013-02-11
이제 날짜 범위에서 두 날짜 사이의 판매 데이터를 선택하려는 경우 쿼리는 무엇입니까?
예를 들어 판매 데이터를에서 2013-01-03
까지 선택하려고 합니다 2013-01-09
.
답변
보시다시피 작업을 수행하는 데는 두 가지 방법이 있습니다.
- 허용되는 모든 옵션을 입력하십시오
- 모든 잘못된 옵션 제외
분명히 두 번째 방법은 훨씬 더 간단합니다 (4 개에 대해 2 개의 경우).
SQL은 다음과 같습니다.
SELECT * FROM Product_sales
WHERE NOT (From_date > @RangeTill OR To_date < @RangeFrom)
답변
SELECT * from Product_sales where
(From_date BETWEEN '2013-01-03'AND '2013-01-09') OR
(To_date BETWEEN '2013-01-03' AND '2013-01-09') OR
(From_date <= '2013-01-03' AND To_date >= '2013-01-09')
모든 가능성을 다루어야합니다. From_Date 또는 To_Date 는 기간 사이에 있거나 레코드 날짜가 전체 범위를 포함 할 수 있습니다.
From_date
또는 중 하나가 To_date
날짜 사이 에 있거나 From_date
시작 날짜보다 작고 To_date
종료 날짜보다 큰 경우 그러면이 행이 반환되어야합니다.
답변
범위 사이의 날짜를 얻으려면 다음 쿼리를 시도하십시오.
SELECT *
FROM Product_sales
WHERE From_date >= '2013-01-03' AND
To_date <= '2013-01-09'
답변
SELECT * FROM Product_sales
WHERE From_date between '2013-01-03'
AND '2013-01-09'
답변
여기에는 찾고있는 모든 조건이 포함됩니다.
SELECT * from Product_sales where (From_date <= '2013-01-09' AND To_date >= '2013-01-01')
답변
SELECT *
FROM Product_sales
WHERE (
From_date >= '2013-08-19'
AND To_date <= '2013-08-23'
)
OR (
To_date >= '2013-08-19'
AND From_date <= '2013-08-23'
)
답변
시도하십시오 :
DECLARE @FrmDt DATETIME, @ToDt DATETIME
SELECT @FrmDt='2013-01-03', @ToDt='2013-01-09'
SELECT *
FROM Product_sales
WHERE (@FrmDt BETWEEN From_date AND To_date) OR
(@ToDt BETWEEN From_date AND To_date)