2011-03-29 7 views
2

Sybase에서 Oracle으로 코드를 변경하고 있습니다. 아래 쿼리를 oracle로 변환하는 데 문제가 있습니다. 여기Oracle의 Sybase 동급

Select Custodian_addr,convert(datetime,dateadd(ss,CreateDT,"01/01/1970") 

CreateDT는 예를 들면 값이 1015015173 (이 예) 날짜 변환 결과는 I가 연구되고 오라클 대안을 발견 2002년 3월 1일 그리니치 표준시 오후 8시 39분

이다 열 이름 오류

Select Custodian_addr,to_char(CreateDT,"SS") 

내가 Oracle.I에서 쿼리 오류를 얻고에서 어떤 결과가 무슨 잘못 식별 할 수 없습니다입니다. 필자는 Perl ["]에서 이것을 실행하고 있기 때문에 이스케이프 처리해야하거나 무슨 문제가 될 수 있습니까? 나에게 해결책을 제안 해주세요.

답변

1
SELECT 'some address' as custodian_addr, 
    date '1970-01-01' + 1015015173/86400 as create_dt 
from dual 
/

CUSTODIAN_AD CREATE_DT 
------------ ------------------- 
some address 2002-03-01 20:39:33 

오라클 날짜 계산은 매우 간단합니다. 날짜에 1을 더하면 1 일씩 증가합니다. 따라서이 숫자는 초이므로 86400 (60 * 60 * 24)으로 나누면 해당 숫자가 일수 (및 그 일부)로 표시됩니다.

+0

@ Peter.to 거기에 to_char 사용에 대한 대안이 있습니다. – user682571

+0

@peter 1015015173 ---- 열 이름 날짜 '1970-01-01'+ field_name/864000)로 설정할 수 있습니까? – user682571

+0

예 - 방금 예를 들어 귀하의 가치를 사용했습니다. –

0

어떤 오류가 발생합니까?

TO_CHAR 함수는 큰 따옴표를 사용하지 않아야합니다.

TO_CHAR(CreateDT,'SS') 

오라클에 큰 따옴표를 넣으면 문자열 상수가 아닌 식별자로 해석됩니다.