2016-07-15 2 views
2

첫 번째 쿼리가 오늘과 어제의 레코드를 어떻게 반환 할 수 있습니까? 그러나 두 번째 쿼리는 어제의 레코드 만 반환 할 수 있습니까?SQL 날짜 비교 문제

1

SELECT 
    * 
FROM 
    table 
WHERE 
    DateTimeOfInsert >= '20160714' 
    AND 
    DateTimeOfInsert <= '20160715' 

가 하나의 start/end 날짜의를 제공하기 위해 허용으로 내가 BETWEEN을 사용할 수 없습니다

SELECT 
    * 
FROM 
    table 
WHERE 
    DateTimeOfInsert >= '20160714' 

2.

+0

당신이 DateTimeOfInsert <= '20160715'DateTimeOfInsert < '20160716' –

+0

@JatinPatel 왜 변경해야합니다

귀하의 질의는 다음과 같이 보일 것이다? '<='는 작동해야합니까, 그렇지 않아야합니까? – fishmong3r

+1

시간 부분없이 날짜 만 제공하면 해당 날짜는 자정에만 일치합니다. 자정 이후 시간이 있으면 날짜를 무시합니다. –

답변

4

시간을 놓쳤습니다. 2016-07-14 00:00:00 ~ 2016-07-15 00:00:00을 기술적으로 검색하며 2016-07-14 데이터만으로 구성됩니다.

는 다음 두 이일에 발견해야하는 경우 :

SELECT 
    * 
FROM 
    table 
WHERE 
    DateTimeOfInsert >= '2016-07-14 00:00:00' 
    AND 
    DateTimeOfInsert <= '2016-07-15 23:59:59' 

을하거나 2016년 7월 14일 0시 사이에 의미 두 번째 조건

DateTimeOfInsert <= '20160716' 

이를 사용 : 00 ~ 2016-07-16 00:00:00

+0

그냥 실현. 'CAST (DateTimeOfInsert AS DATE) '가 사용되었습니다. 그래도 고마워. – fishmong3r

+0

열을 현재 날짜로 캐스팅하는 대신, 매개 변수 또는 고정 값을 조정하여 하루가 끝날 때까지 시간을 포함 시키십시오. 성능 점 –

+0

에서 더 좋을 것입니다. @ JatinPatel 듣고 있습니다. '캐스팅 (CAST) '은 성능 측면에서 더 나쁩니 까? – fishmong3r

0

BETWEENstatement을 사용하지 않으시겠습니까?

SELECT * 
FROM table 
WHERE DateTimeOfInsert >= '2016-07-14 00:00:00' 
AND DateTimeOfInsert < '2016-07-16 00:00:00' 
+0

제 질문을 읽어주십시오. 나는 왜 내가 BETWEEN을 사용할 수 없는지 설명했다. – fishmong3r

+1

자정 이전에 마지막 순간에 일어나는 모든 일을 무시하고 싶습니까? (0이 아닌 밀리 초 값). 이것이 대부분의 사람들이'BETWEEN'을 사용하지 말고'<='보다는'<'를 사용하는 것을 권하는 이유입니다. * 독점적 인 * 종점은 계산하기 쉽고 사용되는 데이터 유형의 정밀도에 의존하지 않습니다. –

+0

'DateTimeOfInsert> '2016-07-14 00 : 00 : 00''(제외)는 'DateTimeOfInsert> ='2016-07-14 00 : 00 : 00''이어야하며, 끝 조건은 정확합니다. – Lucero