2012-08-13 5 views
0

날짜 열의 일부 날짜의 연도가 잘못되었습니다. 올해의 처음 두 자릿수는 어떻게 변경합니까?PLSQL : 연도의 처음 두 자리 변경

예를 들어 :

select 
ID, 
to_char(END_DT,'yyyy-mm-dd hh:mi:ss') as dt 
From DB 

가 발생할 것인가 :

ID dt 
1 0207-08-10 12:00:00 
2 0208-03-31 12:00:00 
3 0200-11-10 12:00:00 

나는 결과는 다음과 같이 할 :

ID dt 
1 2007-08-10 12:00:00 
2 2008-03-31 12:00:00 
3 2000-11-10 12:00:00 
+2

귀하의 문제는 날짜가 SELECT 쿼리에서 어떻게 보이는지는 생각하지 않습니다. 문제는 날짜가 잘못 저장되어 있다는 것입니다. 올바른 날짜 값을 갖도록 열을 업데이트해야합니다. –

+0

은'select END_DT from DB'의 출력을 보여주고 열 유형과 어떻게 INSERT합니까 – alfasin

+0

포맷 된 _string_을 가져 오려고 시도하는 이유는 무엇입니까? 쿼리 코드가이를 지원하면 (예 : Java 또는 .NET에서 작업하는 경우) 실제'timestamp '유형을 가져옵니다. –

답변

0

그냥 올바른 "을 얻을"하려면 날짜와 같은 것을 사용할 수 있습니다.

이 일관된 형식 문제가있는 경우 15,126,346,
0

다음 논리는 문제를 취소해야합니다

select (case when left(to_char(END_DT, 'yyyy'), 2) = '02' 
      then '20'||substr(to_char(END_DT,'yyyy-mm-dd hh:mi:ss'), 3, 100) 
      else to_char(END_DT,'yyyy-mm-dd hh:mi:ss') 
     end) as BetterFormat 

이 문제가 처음 두 자리가 반전되어 있다고 가정하고이 2000 년 이전 발생하지 않았다

그러나 데이터베이스에서 데이터가 올바르지 않다는 점을 강조해야합니다. 올바른 작업은 데이터베이스의 데이터를 수정하는 것입니다. 문제를 해결하는 것은 중기 적으로 상황을 악화시킬 수 있습니다.

+0

문제는'to_char (END_DT, 'yyyy')'는''02 ''로 해결되지 않고'0207'이나'0208' 등으로 해결된다는 것입니다. 오스카가 제안한 것처럼'substr'을 사용하고 싶을 것입니다 – alfasin