2013-03-17 2 views
0

SYSDATE을 사용하여 다른 테이블의 열을 일치시키고 오늘 날짜와 일치 시키려고합니다. 출력은 실제로 실제로 오늘 날짜가있는 행 하나가 아닌 모든 행의 오늘 날짜로 채워집니다.Oracle Sql에서 sysdate 오류와 일치하는 날짜 열

SELECT building.building_code, 
    building.building_name, 
    room_booking.booking_date 
FROM building, 
    room_booking, 
    dual 
WHERE to_date(booking_date) = trunc(sysdate) 

출력은 다음과 같습니다 거기에 오늘 날짜 만 1 행이 존재하는 한

BUILDING_CODE BUILDING_NAME BOOKING_DATE 
------------- --------------- ------------ 
A    ARCADIA   <17-mar-13> 
B    BELIZE   <17-mar-13> 
C    CAMDEN   <17-mar-13> 
D    DENVER   <17-mar-13> 
E    EXETER   <17-mar-13> 
F    FORT PORTAL  <17-mar-13> 
G    GRAMPIAN  <17-mar-13> 
H    HELVITICA  <17-mar-13> 
I    INVICTA   <17-mar-13> 
J    JULIET   <17-mar-13> 

10 rows selected 

는 결과에서 한 행이 있어야합니다. 내가 어디로 잘못 갔니?

+2

두 테이블에서 조인 조건이 필요하며 '이중'은 필요하지 않습니다. – Mat

+0

Thanks Mat - 지금 제거했습니다. –

+1

'예약 _ 날짜 '주변에 왜'TO_DATE'가 있습니까? 그것은 문자열인가? –

답변

1

테이블 room_bookingbuilding에 가입하지 않아 직교 제품을 생성하기 때문입니다.

SELECT 
    b.building_code, 
    b.building_name, 
    r.booking_date 
FROM building b 
     JOIN room_booking r /* missing join condition here: ON r.building_code = b.building_code */ 
WHERE 
    TO_DATE(r.booking_date) = TRUNC(SYSDATE) 
+0

감사합니다. Sebas, 완벽하게 작동합니다. :) –

+2

암시적인 날짜 형식 변환 오류에주의하십시오. 이 코드는 세션이'set session set nls_date_format = 'YYYY-MM-DD HH24 : MI : SS';'를 실행하면 작동하지 않을 것이다. 'TO_DATE (r.booking_date) '대신'TRUNC (r.booking_date)'를 사용하고 싶을 것이다. –

관련 문제