2014-10-06 4 views
0

테이블로 가져와야하는 Excel 형식의 데이터 세트를 가지고 있는데 한 열은 날짜이지만 데이터는 가져올 때 숫자 형식 (예 : 41275)으로 저장됩니다. 데이터, yyyy-mm-dd 데이터 형식을 선택하려고했는데 오류가 발생합니다. 올바른 달이 아니거나 MM/DD/YYYY 또한 오류가 발생했습니다. 월의 날짜는 1 월과 마지막 날 사이 여야합니다. 누구든지이 번호를 알고 어떻게 데이터베이스로 가져올 때 날짜 형식으로 변환 할 수 있습니까? 감사!oracle sql developer에서 날짜로 숫자를 변환하는 방법

+0

무엇이 탁월합니까 당신은 1900 년 1 월 1 일 이후의 일 수입니다 ... – DarkSquirrel42

+0

@ DarkSquirrel42 숫자 형식으로 변환하는 방법을 조용히 이해하지 못합니까? 그 숫자가 특정 날짜를 의미합니까? – user2810081

+0

나는 세포 유형을 텍스트로 변경하는 가장 좋은 방법은''text (Date_col, 'yyyy.mm.dd')'가 아닌 다른 열을 사용하는 것이라고 생각한다. 이제 날짜가 yyyy.mm.dd 인 delimetered csv가 있습니다. 이제 버그없이 easly 가져올 수 있습니다. 또는 Java에 익숙하다면 API를 사용하여 간단한 코드를 작성하고 모든 라인을 읽고 jdbc를 삽입하십시오. (나는 엄청난 금액을 가져오고 날짜를 가져올 필요가 있습니다. 적은 양의 텍스트를 셀에 넣고 문제없이 가져 오는 경우) – Csanesz

답변

0

당신이 가지고 수는 특정 날짜의 엑셀 표현입니다 ...

가 특정 날짜에서 계산하기 시작, 상점에게 일의 수와 날짜를 엑셀 ... 정확합니다 :

1 = 1-JAN-1900
2 = 2-JAN-1900
...
30 30-JAN-1900

때문에, 오라클의 날짜로 귀하의 엑셀 번호를 얻으려면, 당신은 할 수 있습니다 = 이 같은 것을 시도해보십시오 ...

to_date('1899-12-31','yyyy-mm-dd') + 41275 
+1

Excel의 1900-leapyear-bug ;-)를주의하십시오./kb/214326/en-us –

+0

오라클에는 존재하지 않는'date_add' 함수와'interval' 리터럴의 철자법이 잘못되었습니다. ;-) – nop77svk

+0

@ nop77svk 음, date_add가 oracle과 아무런 문제가 없다는 것을 알기까지 ... 적어도 며칠 동안은 "+" – DarkSquirrel42

2

당신이 찾고있는 (언급 AmmoQ 엑셀의 윤년 버그에 대한) 표현은 다음과 같습니다

case 
    when yourNumberToBeImported <= 59 then date'1899-12-31' + yourNumberToBeImported 
    else date'1899-12-30' + yourNumberToBeImported 
end 

그런 다음 중 하나를

  • 가 (전역)을 생성 할 수있다 임시 테이블을 Oracle DB에 저장하고 Excel에서 테이블로 데이터를로드 한 다음 위의 계산이 포함 된 임시 테이블에서 대상 테이블로 데이터를 다시로드하십시오.

하거나

  • 로드 오라클 DB의 지속적인 테이블에 엑셀에서 데이터는 위의 계산에 포함됩니다 영구 테이블에 뷰를 만들 수 있습니다.
관련 문제