2016-05-31 5 views
0

날짜 값이 'YYMMDD'형식 인 CHAR_Date 열이 있습니다.DB2 i : Char YYMMDD를 날짜로 변환

날짜 산술을하고 싶습니다. 그래서 날짜 데이터 형식으로 변환해야합니다. 문제는 Char_Date에도 공백이 포함되어 있다는 것입니다.

유효한 값을 사용하여 CHAR_Date를 DATE_Date 열로 캐스팅하는 방법은 무엇입니까?

+0

명백히 "공백 포함"으로 추정되는 유일한 대답은 Char_Date 열의 값이 비어있을 수 있음을 의미합니다. 유일한 대답이 받아 들여지지 않았다는 것을 감안할 때, 아마도 "공백을 포함하고있다"는 것은 다른 것을 암시하려는 의도가있다. 어쩌면 몇 가지 예가 도움이 될 수 있습니다 - 또는 아마도 대답이 받아 들여질 수 있습니다. 또는 DATE 데이터 유형을 제공하지 못했다고 제안 된 것이 문제이거나, unstated 릴리스가 하나의 argumet TIMESTAMP 스칼라를 사용할 수 없습니다. 그래서 아마도 대신에 : DATE (TO_DATE (NULLIF (CHAR_DATE, ''), 'YYMMDD')) – CRPence

+0

@CRPence "TO_DATE()"는 유효한 DB2 for i ("db2400") 기능이 아닙니다. http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/db2/rbafzscale.htm 응답이 승인 된 것으로 표시됩니다. 쿼리는 이미 서명 된 상태이며 프로덕션 상태입니다. –

+1

해당 페이지에서 \ 검색 가능하지 않지만 TO_DATE는 유효합니다. [링크] (http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/db2/rbafzscatsformat.htm) "** 참고 ** ** 구문 대안 ** : TO_DATE 및 TO_TIMESTAMP는 TIMESTAMP_FORMAT의 동의어입니다." – CRPence

답변

4
SELECT 
case when CHAR_Date = '' then TIMESTAMP('0001-01-01') 
          else TIMESTAMP_FORMAT(CHAR_Date, 'YYMMDD') 
        end 
    as DATE_Date 

FROM TABLE_Data 
0

당신은 함수 TIMESTAMP_FORMAT에게

TIMESTAMP_FORMAT ('990205', 'YYMMDD')

를 사용 할 수 있습니다 데이트하려면 :

DATE (TIMESTAMP_FORMAT ('990205'을, 'YYMMDD'))