2014-10-28 4 views
3

나는 여러 날 동안 해결되지 않은 문제가 있습니다. 저는 많은 질문에서 답을 찾고 답을 찾았습니다. 데이터베이스에서 datetime에 대한 구조 데이터가 너무 이상하게 보입니다. 이 게시물을 읽었습니다 : Select from table by knowing only date without time (ORACLE) 하지만 그것은 저에게는 효과가 없습니다. 문제를 시작해 보겠습니다.날짜와 시간 조건을 선택하십시오 (오라클)

Im ODBC 연결을 사용하여 Remedy Client 용 ORACLE Database에서 데이터를 가져옵니다. 나는이 같은 간단한 쿼리를 선택하면

:

Create_Date 
2014-07-01 05:27:02.000 
2014-07-02 05:27:02.000 

을하지만 난이 쿼리를 할 때 :

select Create_Date from HPD_Help_Desk_SLA 

는이 발생할

select Create_Date from HPD_Help_Desk_SLA where Create_Date >= TO_DATE('2014-05-03', 'YYYY-MM-DD') AND Create_Date < TO_DATE('2014-08-04', 'YYYY-MM-DD') 

그것은 결과 :

Warning: odbc_exec(): SQL error: [AR System ODBC Driver]Column not found: ., SQL state S0000 in SQLExecDirect in.... 

나는이 간단한 쿼리 시도 :

select Create_Date from HPD_Help_Desk_SLA where Create_Date <= '2014-08-04' 

select Create_Date from HPD_Help_Desk_SLA where Create_Date like '2014-07-01%`' 

이 표시되지 않는 것도 이에 대한

어떤 아이디어? 감사합니다.

+2

어떤 ODBC 드라이버를 사용하고 있습니까? TO_DATE를 이해하지 못한다고 불평하는 ODBC 드라이버 일 수 있습니다. –

+2

동의합니다. ODBC는 오라클이 아닌 다른 dbms에 연결되어 있다고 생각합니다. –

+1

네, 그게 문제 일 수도 있습니다. 어떤 생각이 드나요? CZ 날짜별로 필터링 된 데이터를 표시하고 싶습니다. 실제로 내가 테이블 데이터베이스에 가서 데이터베이스의 구조를 볼 수 있습니다, 난 그냥 데이터를 선택하는 클라이언트를 사용하지만, 내 보스가 오라클 데이터베이스라고. – Koyix

답변

1

내 의견은 요청에 따라 적절한 대답으로 "업그레이드"[AR System ODBC Driver]을 :

귀하의 오류 메시지가 사용중인 보여줍니다.

Oracle 데이터베이스에 직접 연결하지 않고 AR 시스템에 연결하는 ODBC 데이터 원본을 사용하고 있습니다. 이것은 쿼리의 구문이 AR System이 허용하는 구문 중 하나 여야한다는 것을 의미합니다 (Oracle 데이터베이스가 "AR System"아래에서 실행 되더라도). 따라서 TO_DATE을 사용하면 오류가 발생합니다.

AR System에서 날짜 쿼리에 대한 올바른 구문을 찾아야합니다.

또는 Oracle ODBC 드라이버 및 데이터 소스로 전환 할 수 있지만 AR System을 우회하여 데이터베이스로 직접 이동하는 것과 다른 연결 자격 증명이 필요할 수 있습니다. 설치시 보안 문제 일 수 있습니다.

오라클의 지식이 아닌 AR 시스템 지식을 가진 사람에게 질문해야한다고 생각합니다. 설명서는 AR 시스템은 여러 가지 관계형 데이터베이스에서 실행할 수있는 방법을 보여줍니다 참조

http://www.unc.edu/remedy/clients/7.0.1/BMC%20Remedy%20AR%20System%20Server%207-0-01/Database-Ref-700.pdf

, 오라클이 하나되는 : "AR System" "Oracle"에 대한

구글이 처음으로 히트 등이 참조를 제공합니다 EDIT

그들의. 23 페이지는 AR 시스템 "타임 스탬프"가 오라클에 숫자로 저장되었음을 보여줍니다. 나는 이것이 AR System ODBC 드라이버를 사용할 때 AR System 구문에서 ODBC 호출에 SQL을 작성해야한다는 것을 거의 확신합니다. 그런 다음 AR System ODBC 드라이버는 AR System이 설치된 관계형 데이터베이스에 필요한 구문으로이를 다시 작성합니다.

그래서 오라클 개발자가 아닌 AR System 개발자에게 묻기를 제안합니다.

+0

답장을 보내 주셔서 감사합니다. 그렇다면 날짜가 내 쿼리에 대해 무시되는 이유는 문제입니다. 하지만 지금까지 날짜별로 필터링 할 수있는 최상의 쿼리를 찾는 것은 어렵습니다. 정수 및 날짜/시간 형식에 대한 검사를 시도해 왔지만 아직 작업이 진행되지 않았습니다. – Koyix

0

당신은 리터럴과 날짜를 비교하고 있습니다. 리터럴을 날짜로 변환하려면 to_date를 사용하십시오.

where Create_Date = to_date('2014-08-04', 'YYYY-MM-DD')

trunc 시간 부분을 절단한다. 쿼리는 해당 날짜의 모든 행을 반환합니다. 날짜 범위의 경우 시간 부분이 염려되는 경우 trunc을 제거하십시오.

문제가 ODBC과 관련된 경우 고정 되어도 datetime 형식과 관련된 오류가 발생합니다 (ii 데이터 형식은 DATE). 귀하의 NLS_DATE_FORMAT에 따라 다릅니다.

예를 들어

,

SQL> SELECT empno, ename, hiredate FROM emp WHERE hiredate <='20/02/1981'; 
SELECT empno, ename, hiredate FROM emp WHERE hiredate <='20/02/1981' 
                 * 
ERROR at line 1: 
ORA-01843: not a valid month 


SQL> 

하지만, 암시 적 변환으로, 다음 쿼리를 실행합니다.

SQL> SELECT empno, ename, hiredate FROM emp WHERE hiredate <='20-FEB-1981'; 

    EMPNO ENAME  HIREDATE 
---------- ---------- --------- 
     7369 SMITH  17-DEC-80 
     7499 ALLEN  20-FEB-81 

SQL> 

그래서, 내가 OP 보지 않았다

SQL> SELECT empno, ename, hiredate FROM emp WHERE hiredate <=to_date('20-FEB-1981','DD-MON-YYYY'); 

    EMPNO ENAME  HIREDATE 
---------- ---------- --------- 
     7369 SMITH  17-DEC-80 
     7499 ALLEN  20-FEB-81 

SQL> 

업데이트 이미 TO_DATE를 사용하고, 따라서 문제는 날짜 형식이 될 것 같지 않습니다, 안전합니다.

TO_DATE을 사용할 때 오류가 발생합니다. 데이터베이스가 이 아니고Oracle이 아니기 때문에 특정 데이터베이스에서 TO_DATE 함수가 인식되지 않을 가능성이 큽니다.

select * from v$version이 적합한 지 확인하십시오.

+0

경고 : odbc_exec() : SQL 오류 : [AR System ODBC Driver] 열을 찾을 수 없습니다. – Koyix

+0

이것은 OP에 실제로있는 문제와 관련이없는 것 같습니다. 그것은'to_date '에러를 해결하지 못했고, 그들은 이미 범위를 검색하고 있으며, trunc'ing하면 인덱스가 사용되지 않을 수도 있습니다. –

+0

같은 문제가 다른 것 같습니다. 하지만 내 작업은 OP가 행이 반환되지 않는다고 말하면 단순히 리터럴 때문에 발생하지만 말입니다. ODBC 연결이 문제라면 문제는 내 솔루션과 완전히 다릅니다. –