복붙노트

[SQL] SQL에서 날짜별로 필터

SQL

SQL에서 날짜별로 필터

나는 (날짜 시간) 날짜에 대한 내 테이블에 열이 나는 말한다 WHERE 절을 만들려고하고 WHERE 2012년 12월 11일 및 2012년 12월 13일 간의 날짜

날짜 열 샘플 2012-05-24 값 = 00 : 38 : 40.260

나는 WHERE 말하고 싶은 MM-DD-YYYY 및 MM-DD-YYYY 간의 날짜.

나는 일을 시도

WHERE dates BETWEEN ((convert(nvarchar(10), dates,110) = '2012-12-12') AND (convert(nvarchar(10), dates,110) = '2012-12-12'))

하지만 작동하지 않습니다. "= 가까운 잘못된 구문"

도와주세요

편집하다:

다양한 옵션과 설명들에 대한 감사합니다. 이 RichardTheKiwi의 옵션 @ 작업을 얻었다.

해결법

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

    1.날짜 열 시간 정보를 포함하지 않는 경우에, 당신은 멀리 얻을 수 있습니다 :

    날짜 열 시간 정보를 포함하지 않는 경우에, 당신은 멀리 얻을 수 있습니다 :

    WHERE dates BETWEEN '20121211' and '20121213'
    

    그러나 날짜 지정된 열이 날짜 실제로, 당신이 원하는

    WHERE dates >= '20121211'
      AND dates < '20121214'  -- i.e. 00:00 of the next day
    

    SARGability (좋은 성능을 위해 사용 인덱스 기능)을 유지 SQL 서버 2008 이후에 대한 또 다른 옵션은 다음과 같습니다

    WHERE CAST(dates as date) BETWEEN '20121211' and '20121213'
    

    참고 : 항상 명확한 날짜 리터럴 SQL Server와 ISO-8601 YYYYMMDD 형식을 사용합니다.

  2. ==============================

    2.

    WHERE dates BETWEEN (convert(datetime, '2012-12-12',110) AND (convert(datetime, '2012-12-12',110))
    
  3. ==============================

    3.그럼 당신은 잘못 NVARCHAR와 날짜를 비교하기 위해 노력하고 있습니다. 해야한다

    그럼 당신은 잘못 NVARCHAR와 날짜를 비교하기 위해 노력하고 있습니다. 해야한다

    Where dates between date1 And date2
    -- both date1 & date2 should be date/datetime
    

    날짜 1의 경우, DATE2 문자열; 서버는 필터링하기 전에 날짜 형식으로 변환됩니다.

  4. from https://stackoverflow.com/questions/13869640/filter-by-dates-in-sql by cc-by-sa and MIT license