2014-11-24 5 views
0

현재 배열은 입니다. SAP DSO : dd-mm-yyyy 형식의 데이터 열을 포함합니다.teradata에서 2014 년이 1914로 변환됩니다.

BODS 작업은 DSO에서 데이터를 가져 와서 랜딩 테이블로로드합니다. Teradata의 해당 날짜 열은 dd-mm-yy입니다.

날짜가 teradata에로드 될 때, 2014 년은 1914로 변환됩니다. 변환과 관련된 것은 없습니다. 소스와 타겟 간의 직접 맵핑.

이 문제는 몇 달 전부터 발생하기 시작했습니다. 확인해야 할 사항이 없습니다.

답변

0

CenturyBreak 용 DBSControl은 20 자리로 해석되는 두 자리 연도를 지정하며 21 세기로 해석됩니다. 시스템에이 값이 0이 아닌 값 (기본 값)으로 구성되어있는 경우, 이것이 데이터로 동작하는 이유입니다.

CenturyBreak는 숫자로 입력 한 4 자리 연도 또는 날짜에는 영향을주지 않습니다.

CenturyBreak = 10 인 경우 '00/01/01'및 '09/01/01 '과 같은 문자열은 2000 및 2009로 해석됩니다. '14/01/01'로 삽입 된 문자열은 1914로 해석됩니다.

DBA에게 CenturyBreak가 0이 아닌 값으로 설정되었는지 또는 데이터 입력을 명시 적으로 숫자 날짜 값으로 변환하는지 확인하십시오.

1

날짜에 올바른 연도를 표시하려면 날짜 시간 형식 dd-mm-rrrr을 사용하십시오.

날짜가 한 세기에 저장되지만 다른 세기를 나타내는 경우 날짜가 잘못된 접두사로 표시 될 수 있습니다. rrrr 년 형식은 그대로 작동합니다. 지정된 두 자리 년 현재 연도의 마지막 두 자리가 00 내지 49 인 경우 다음으로,

  • 00 49이면

    는 다음 반환 해 동일한 처음 두을 갖는다 현재 연도의 자릿수 현재 연도의 마지막 두 자리가 50 내지 99 인 경우

  • 후 리턴 년 제 2 개 숫자는 현재 년의 제 2 자릿수 1보다 크다. 지정된 두 자리 년 현재 연도의 마지막 두 자리, 반환의 다음 제 2 자리 00 49하고 있다면,

    • 50 99이면

    연도는 현재 연도의 처음 두 자리 보다 1 작습니다.

  • 현재 연도의 마지막 두 자리 숫자가 50에서 99이면 반환되는 연도의 은 현재 연도와 처음 두 자리가 동일합니다.

나는 BOXI 3.1 및 오라클과 비슷한 문제를 가로 질러왔다.

DateTime 형식이 dd/mm/yyyy 인 날짜 필드가있는 테이블을 여러 개 만들고이 형식으로 유니버스를 작성한 후 일부 날짜 결과가 잘못 표시되는 것으로 나타났습니다. 01/07/199301/07/2093으로 표시되었습니다. 이는 데이터가 2 yy 자릿수 밖에없는 테이블에로드 되었기 때문입니다. 01/07/93 오라클은 DateTime 형식을 4 yyyy 자릿수로 예상했습니다.

오라클은 연도 형식을 4 자리로 강요했지만 지난 세기 (20 일)에 있었지만 21 세기에 저장되었으므로 잘못된 세기가 연말에 붙습니다.

해결하려면 올해DateTime 형식을 사용했습니다. 오라클의 전체 설명은 link이며 자세한 설명은 here입니다.

DateTime 형식이 dd-mm-rrrr 인 테이블을 다시 만들 때 올바르게 표시됩니다.

이 정보가 도움이되기를 바랍니다.