2013-06-26 2 views
1

Microsoft Query에서 쿼리 할 때 올바른 결과가 표시되지만 SQLPLUS (Oracle)에서 쿼리 할 때 잘못된 결과가 표시됩니다. 여기 Oracle 날짜 대 Microsoft 날짜가

는 쿼리의 (결과는 6 월 13 일 자정을 6 월 12부터 3 pm 올바른 표시입니다.

SELECT 
     NAME, 
     CIM, 
     NUM_of_People, 
     STARTDATETIME 
From Table 
WHERE (SUSTAINED_FLAG=1) 
AND (PLANNED_FLAG=0) 
AND (STARTDATETIME>{ts '2013-06-12 04:00:00'} 
And STARTDATETIME<{ts '2013-06-13 12:00:00'}) 



내가 나에게 잘못된 결과를 제공이 절을 사용하고 오라클에서 .
가 표시되어 날짜에서 질의 결과 6 월에만 13 12 후 : 12 오후 AM

SELECT 
     NAME, 
     CIM, 
     NUM_of_People, 
     TO_CHAR(STARTDATETIME,'MM/DD/YYYY HH:MI:SS') As STARTDATETIME 
FROM OBVWH. 
where BETWEEN To_Date(to_char(STARTDATETIME, 'DD-MON-YYYY')) >= To_Date('06/12/2013 16:00:00','MM/DD/YYYY HH24:MI:SS') 
and To_Date(to_char(STARTDATETIME, 'DD-MON-YYYY')) <= To_Date('06/13/2013 12:00:00','MM/DD/YYYY HH24:MI:SS') 
and sustained_flag = 1 and planned_flag = 0 ORDER BY STARTDATETIME ASC 
+1

죄송 변경하지 않는 날짜입니다 . –

+0

나는 나의 것을 역시 삭제했다, 도움을위한 감사합니다. – Mowgli

+0

첫 번째 버전에는 "04:00"이 있고 두 번째 버전에는 "16:00"이 있습니다. 또한 비교 연산자는'>'과'<' to '> ='및'<='에서 전환합니다. –

답변

4

를 Where CIA 요원에 있기 때문에이의이 문제가있는 이유입니다. 사용

To_Date(to_char(STARTDATETIME, 'DD-MON-YYYY')) 

당신이하고있는 일은 날짜에서 시간 요소를 제거하여 모든 자정에 효과적입니다. 이것의 간단한 예는 다음과 같습니다

sysdate가 더 이상 두 번 형식을 변경 한 후에는 sysdate와 더 이상 동일하지 않습니다. 열 이후

당신이 전혀에서 서식을 할 필요가 내가 대답으로 퍼팅에 일하는 것처럼 그냥 내 댓글을 삭제하여 절에

where STARTDATETIME >= To_Date('06/12/2013 16:00:00','MM/DD/YYYY HH24:MI:SS') 
and STARTDATETIME <= To_Date('06/13/2013 12:00:00','MM/DD/YYYY HH24:MI:SS') 
and sustained_flag = 1 and planned_flag = 0 ORDER BY STARTDATETIME ASC 
+0

설명 해 주셔서 감사합니다.하지만 사이에 뭔가 있을까요? 틀릴 수도 있습니다. – Mowgli

+0

잘 작동했지만 'Where'다음에 '사이'가 없어야합니다. 다시 한번 감사드립니다. – Mowgli

+1

@Mowgli 이렇게하면 BETWEEN을 사용할 수 있습니다. ''06/12/2013 16:00:00 ','MM/DD/YYYY HH24 : MI : SS ') 사이의 STARTDATETIME은 및 To_Date ('06/13/2013 12:00:00', ' MM/DD/YYYY HH24 : MI : SS ')' – Noel