복붙노트

[SQL] 두 날짜 사이의 날짜 범위에서 데이터를 선택합니다

SQL

두 날짜 사이의 날짜 범위에서 데이터를 선택합니다

나는 테이블 명명 된 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년 1월 3일에서 2013년 1월 9일에 판매 데이터를 선택합니다.

해결법

  1. ==============================

    1.

    당신이 볼 수 있듯이, 일을하는 데는 두 가지 방법이 있습니다 :

    물론, 두 번째 방법은 훨씬 더 간단 (사에 대한 두 건)이다.

    귀하의 SQL은 다음과 같이 표시됩니다

    SELECT * FROM Product_sales 
    WHERE NOT (From_date > @RangeTill OR To_date < @RangeFrom)
    
  2. ==============================

    2.

    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가 종료 날짜보다 큰 경우; 다음이 행이 반환해야합니다.

  3. ==============================

    3.범위 사이의 날짜를 얻기 위해 쿼리를 다음보십시오 :

    범위 사이의 날짜를 얻기 위해 쿼리를 다음보십시오 :

    SELECT  *
    FROM    Product_sales 
    WHERE   From_date >= '2013-01-03' AND
            To_date   <= '2013-01-09'
    
  4. ==============================

    4.

    SELECT * FROM Product_sales 
    WHERE From_date between '2013-01-03'
    AND '2013-01-09'
    
  5. ==============================

    5.이것은 당신이 찾고있는 모든 조건을 설명합니다.

    이것은 당신이 찾고있는 모든 조건을 설명합니다.

    SELECT * from Product_sales where (From_date <= '2013-01-09' AND To_date >= '2013-01-01')
    
  6. ==============================

    6.

    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'
    )
    
  7. ==============================

    7.시도하십시오 :

    시도하십시오 :

    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)
    
  8. ==============================

    8.

    select * 
    from table 
    where
    ( (table.EndDate > '2013-01-05') and (table.StartDate < '2013-01-07' )  )
    
  9. ==============================

    9.그냥 내 2 센트, 나는 당신에 관계없이 서버의 국가 별 설정의 원하는 것을 알 DB 서버로 "DD-MMM-YYYY"형식 안전한를 사용하여 찾을 수 있습니다. 그렇지 않으면 당신은 잠재적으로 YYYY-DD-mm로서의 일 지역 설정이 서버에 문제로 실행할 수 있습니다 (어떠한 이유)

    그냥 내 2 센트, 나는 당신에 관계없이 서버의 국가 별 설정의 원하는 것을 알 DB 서버로 "DD-MMM-YYYY"형식 안전한를 사용하여 찾을 수 있습니다. 그렇지 않으면 당신은 잠재적으로 YYYY-DD-mm로서의 일 지역 설정이 서버에 문제로 실행할 수 있습니다 (어떠한 이유)

    그러므로:

    SELECT * FROM Product_sales 
    WHERE From_date >= '03-Jan-2013'
    AND To_date <= '09-Jan-2013'
    

    그것은 항상 나를 위해 잘 작동 것 ;-)

  10. ==============================

    10.SQL_Server_2008 R2에이 작업

    SQL_Server_2008 R2에이 작업

    Select * 
    from Product_sales
    where From_date 
    between '2013-01-03' and '2013-01-09'
    
  11. ==============================

    11.이 쿼리는 당신을 도울 것입니다 :

    이 쿼리는 당신을 도울 것입니다 :

    select * 
    from XXXX
    where datepart(YYYY,create_date)>=2013 
    and DATEPART(YYYY,create_date)<=2014
    
  12. ==============================

    12.

    SELECT NULL  
        FROM   HRMTable hm(NOLOCK)  
        WHERE  hm.EmployeeID = 123
            AND (  
                    (  
                        CAST(@Fromdate AS date) BETWEEN CAST(hm.FromDate AS date)  
                            AND CAST(hm.ToDate AS date)  
                    )  
                    OR (  
                        CAST(@Todate AS date) BETWEEN CAST(hm.FromDate AS date)  
                            AND CAST(hm.ToDate AS date)  
                       )  
                    ) 
             )
    
  13. ==============================

    13.이 쿼리를 확인, 내가 어떤 예약 날짜와 무릎에 걸쳐 날짜 체크 여부를 확인하기 위해이 쿼리를 생성

    이 쿼리를 확인, 내가 어떤 예약 날짜와 무릎에 걸쳐 날짜 체크 여부를 확인하기 위해이 쿼리를 생성

    SELECT * FROM tbl_ReservedRooms
    WHERE NOT ('@checkindate' NOT BETWEEN fromdate AND todate
      AND '@checkoutdate'  NOT BETWEEN fromdate AND todate)
    

    이 후 중복되지 상세 정보를 얻을 쿼리에서 'NOT'제거, 중복되는 내용을 retrun합니다

  14. ==============================

    14.당신은 또한 다음과 같은 조각을 사용하여 시도 할 수 있습니다 :

    당신은 또한 다음과 같은 조각을 사용하여 시도 할 수 있습니다 :

    select  * from  Product_sales 
    where  From_date  >= '2013-01-03' and game_date  <= '2013-01-09'
    
  15. ==============================

    15.이 두 날짜 사이의 날짜 범위에서 선택 데이터를 찾기 위해이 쿼리를 사용하여 쉽게

    이 두 날짜 사이의 날짜 범위에서 선택 데이터를 찾기 위해이 쿼리를 사용하여 쉽게

    select * from tabblename WHERE (datecolumn BETWEEN '2018-04-01' AND '2018-04-5')
    
  16. ==============================

    16.당신이 숫자 값을 비교처럼 당신은 SQL에서 날짜를 비교해야

    당신이 숫자 값을 비교처럼 당신은 SQL에서 날짜를 비교해야

    SELECT * FROM Product_sales
    WHERE From_date >= '2013-01-01' AND To_date <= '2013-01-20'
    
  17. ==============================

    17.여기에 8 월 한 달 동안 실행 된 모든 제품 판매를 찾을 수있는 쿼리입니다

    여기에 8 월 한 달 동안 실행 된 모든 제품 판매를 찾을 수있는 쿼리입니다

    또한 쿼리를 확인하는 case 문을 추가합니다

    SELECT start_date, 
           end_date, 
           CASE 
             WHEN start_date <= '2015-08-31' THEN 'true' 
             ELSE 'false' 
           END AS started_before_end_of_month, 
           CASE 
             WHEN NOT end_date <= '2015-08-01' THEN 'true' 
             ELSE 'false' 
           END AS did_not_end_before_begining_of_month 
    FROM   product_sales 
    WHERE  start_date <= '2015-08-31' 
           AND end_date >= '2015-08-01' 
    ORDER  BY start_date; 
    
  18. ==============================

    18.

    DECLARE @monthfrom int=null,
    @yearfrom int=null,
    @monthto int=null,
    @yearto int=null,
    @firstdate DATE=null,
    @lastdate DATE=null
    
    SELECT @firstdate=DATEADD(month,@monthfrom-1,DATEADD(year,@yearfrom-1900,0)) /*Setting First Date using From Month & Year*/
    SELECT @lastdate= DATEADD(day,-1,DATEADD(month,@monthto,DATEADD(year,@yearto-1900,0)))/*Setting Last Date using From Month & Year*/
    
    SELECT *  FROM tbl_Record
    WHERE  (DATEADD(yy, Year - 1900, DATEADD(m, Month - 1, 1 - 1)) BETWEEN CONVERT(DATETIME, @firstdate, 102) AND 
    CONVERT(DATETIME, @lastdate, 102))
    
  19. ==============================

    19.이것은 당신이 원하는 것을 찾기 위해이 쿼리를 사용하여 간단합니다.

    이것은 당신이 원하는 것을 찾기 위해이 쿼리를 사용하여 간단합니다.

    select * from Product_Sales where From_date<='2018-04-11' and To_date>='2018-04-11'
    
  20. from https://stackoverflow.com/questions/14208958/select-data-from-date-range-between-two-dates by cc-by-sa and MIT license