2014-04-16 3 views
0

sql의 datetime 데이터에 대한 논리 연산자의 특성에 혼란 스럽습니다.쿼리 선택이 비정상적으로 작동

2014-04-09 15:28:32.000 

내가이 쿼리의 기준으로 검색하고있다 : 지금은 모두 날짜 범위이 같거나 사이에 떨어지면 4 개 행을 반환

select 
    * 
from [GPSDB].[dbo].[Coordinates] 
where IMEI= '354400055967495' 
    and RecordedDateTime >= '2014-04-09 15:28:32.000' 
    and RecordedDateTime <= '2014-04-09 15:39:20.000' 

내 데이터베이스의 테이블 RecordDateTime에서

처럼 저장됩니다 예상대로하지만 혼란은 여기에서 시작합니다. 초일 부분에서 초 부분을 제거한 후에도 여전히 작동하고 동일한 결과를 반환합니다. 즉

select 
    * 
from [GPSDB].[dbo].[Coordinates] 
where IMEI = '354400055967495' 
    and RecordedDateTime >= '2014-04-09 15:28' 
    and RecordedDateTime <= '2014-04-09 15:39:20.000' 

하지만 두 번째 날짜에서 초 부분을 제거하면 첫 번째 날짜와 일치하는 시간과 함께 한 행만 반환됩니다. 이상한가? :/

도움말.

+4

하드 해당 날짜의 첫 번째 레코드를 가져옵니다 일부 데이터. 나는 4 개의 엔트리 중 3 개의 엔트리가 15:39:00와 15:39:20 사이의 타임 스탬프를 가지고 있다고 생각한다. 그게 다야. 물론 두 번째 타임 스탬프에서 초를 제거하면 반환되지 않습니다. –

+0

결과 집합이나 날짜 부분을 제공 할 수 있습니까? – Vardhan

답변

0

datetime 데이터 2014-04-09 15:28:32.000은 두 부분 날짜 부분이 2014-04-09이고 시간 부분이 15:28:32.000입니다. 당신이 사이 11분 차이가 있기 때문에

RecordedDateTime >= '2014-04-09 15:28:32.000' and RecordedDateTime <= '2014-04-09 15:39:20.000'

그것은뿐만 아니라 시간 부분을 고려 것이라고 그래서

; 그 범위에 해당하는 모든 기록을 가져올 것입니다.

그러나 아래 말할 때, 그것은 비교를 위해 날짜 만 부분을 고려할 것입니다 만 일일이 때문에 당신이 우리를 표시하지 않고 말을 2014-04-09

RecordedDateTime >= '2014-04-09' 
and RecordedDateTime <= '2014-04-09'