2014-07-10 2 views
0

영국식으로 작성된 날짜가 '08/01/2014 '인 텍스트 파일이 있습니다. 나는 날짜의 형식이 동일하고 사용하는 타입 캐스트가 그래서 (일/월/년) 2014년 8월 1일의 날짜를 반환해야날짜가 SSIS의 월로 변환됩니다.

(DT_DBDATE) (SUBSTRING(VOUCHER_DATE,1,2) + "-" + SUBSTRING(VOUCHER_DATE,4,2) 
             + "-" + SUBSTRING(VOUCHER_DATE,7,4)) 

을 날짜로 변환 남아 있는지 확인하기 위해 파생 열을 사용했지만 2014 년 1 월 8 일로 변환 중입니다. 10보다 적은 날짜 만 변환합니다. 날짜가 11 또는 12 또는 13 인 경우 2014 년 12 월 1 일처럼 잘 수행됩니다.

그림의 예를 참조하십시오. 1 월 9 일이 9 월 1 일로 변환되며, 동시에 1 월 22 일이 좋습니다.

01/09/2014 
01/09/2014 
22/01/2014 
22/01/2014 
22/01/2014 
22/01/2014 

왜 그런가?

답변

0

내가 잘못 생각한 것 같습니다. DT_DBDATE 형식은 yyyy-mm-ddlink입니다. 그래서 그것은해야한다 :

(DT_DBDATE) (SUBSTRING(VOUCHER_DATE,7,4) + "-" + SUBSTRING(VOUCHER_DATE,4,2) + "-" + 
      SUBSTRING(VOUCHER_DATE,1,2)) 

출처 :

SELECT N'08/01/2014' as VOUCHER_DATE 
UNION ALL 
SELECT N'01/08/2014' 

결과 :

VOUCHER_DATE Stringtodate 
08/01/2014  2014.01.08 
01/08/2014  2014.08.01 
+0

안녕 저스틴, 난 아무 차이를 시도하지했다. 원본 파일에이 형식이 포함되어 있습니다. 08/01/2014 – user3061338

+0

SSIS 패키지를 만들었고 결과가 응답하고 잘 작동하며 문자열이 날짜로 변환됩니다. 차이점은 데이터 뷰어 그리드를 삽입하고 데이터 열과 변환 된 열의 그림을 표시한다는 것입니다. – Justin

관련 문제