2012-09-02 5 views
0
SELECT * FROM TABLE1 
WHERE WEEKENDDT = (SELECT MAX(ENDDTE)FROM TABLE2) 

이 선택은 데이터를 반환하지 않습니다. 두 테이블 모두 특정 날짜에 대한 데이터를 가지고 있습니다. MAX (ENDDTE)는 02-MAY-12에 대한 데이터가 있고 WEEKENDDT에도 데이터가 있습니다. 02- MAY-12입니다.왜이 절은 where 절이 결과를 반환하지 않는지 비교합니다.

+5

날짜에는 시간 구성 요소가 있습니다. 정확히 일치하는 두 값이 일치합니까? 내 추측은 그렇지 않다는 것입니다. – Ben

+0

두 컬럼의 데이터 타입이 모두'datetime'인지 확인하십시오. –

+2

'datetime'은 Oracle 데이터 타입이 아닙니다. – eaolson

답변

6

datetime 부분이 다른 경우에 발생할 수 있습니다. Table1WEEKENDDT에서의 값 02-09-2012 18:47Table2MAX(ENDDTE)있는 경우

예를 들어, 02-09-2012 00:00, 그들은 같지 않음 있으며, 따라서 =와 비교 될 수 없다. 당신이 time 부분을 절단 할 경우

, 단지 TRUNC()을 사용

SELECT * FROM TABLE1 
WHERE TRUNC(WEEKENDDT) = (SELECT TRUNC(MAX(ENDDTE)) FROM TABLE2) 

는 여기 DEMO입니다.

+1

쿨! 나는 SQL Fiddle을 몰랐다. –

관련 문제