[SQL] 날짜 시간에 대한 SSIS 소스 형식 암시 적 변환
SQL날짜 시간에 대한 SSIS 소스 형식 암시 적 변환
사람이 쇼 날짜의 형식은 SSIS에서 다른 데이터 유형에서 지원하는 것을 차트 알고 있나요? 예를 들어, DT_DBTimestamp의 형식은 1 월을 지원합니다. 나는 찾고 시도했지만 아무것도 찾을 수 없습니다.
물어 이유는 내가이 변환 (날짜, '1 월')을 수행하려고 할 때 내가 기대하는 실패 발견이다. 나는 DT_DBTimestamp에 SSIS에이 같은 값을 끌어 그러나, 그것은 암시 2017년 1월 1일로 파악하기보다는 데이터 형식 변환 오류로 행을 리디렉션합니다.
해결법
-
==============================
1.(문자열에서 변환 할 때)이이 날짜 시간 데이터 형식의 기본 형식입니다
(문자열에서 변환 할 때)이이 날짜 시간 데이터 형식의 기본 형식입니다
DT_DBDATE yyyy-mm-dd DT_FILETIME yyyy-mm-dd hh:mm:ss:fff DT_DBTIME hh:mm:ss DT_DBTIME2 hh:mm:ss[.fffffff] DT_DBTIMESTAMP yyyy-mm-dd hh:mm:ss[.fff] DT_DBTIMESTAMP2 yyyy-mm-dd hh:mm:ss[.fffffff] DT_DBTIMESTAMPOFFSET yyyy-mm-dd hh:mm:ss[.fffffff] [{+|-} hh:mm]
참고 : DT_DATE와 DT_DBTIMESTAMP는 같은 SET 방법이있다
그리고 난 지금까지 그 변환 문자열이 현재의 문화 정보에도 따라 생각
더 자세한 정보는 여기있다
나는 다음과 같은 실험을했다, 그래서 당신의 코멘트를 읽은 후 나는 귀하의 질문에 대한 관련 기사를 찾을 수 없습니다 :
SSIS 암시 날짜 변환
나는 Dataflowtask와 SSIS 패키지를 만들었습니다. 이 dataflowtask에서 나는 (원본으로) 스크립트 구성 요소 및 플랫 파일 대상을 만들었습니다. 이 스크립트는 유형 DT_DbTimeStamp 내부 내가 다음 코드를 사용하는 스크립트의 하나의 출력 열가 오래된 있습니다
Private dtDate As Date = #01/01/2016# Public Overrides Sub CreateNewOutputRows() Output0Buffer.AddRow() Using sw As New IO.StreamWriter("D:\Result.txt", False) sw.WriteLine("CultureInfo;Date;Format;Accepted") sw.Close() End Using For Each ci As System.Globalization.CultureInfo In System.Globalization.CultureInfo.GetCultures(Globalization.CultureTypes.AllCultures) For Each strFormat As String In ci.DateTimeFormat.GetAllDateTimePatterns Dim boolResult As Boolean = True Try Output0Buffer.OutDate = dtDate.ToString(strFormat) boolResult = True Catch ex As Exception boolResult = False End Try Using sw As New IO.StreamWriter("D:\Result.txt", True) sw.WriteLine(ci.Name & ";" & dtDate.ToString(strFormat) & ";" & strFormat & ";" & boolResult.ToString) sw.Close() End Using Next Next End Sub
우선 모든 문화 정보를 통해 반복하고 그리고 난 점점 오전 그와 관련된 모든 날짜 형식을하고 그들을 반복. 그럼 난 dtDate가 포맷 된 문자열로 선언 된 날짜를 변환하고 출력 컬럼에 할당하는 것을 시도하고있다.
그 수단이 허용되도록 DT_DBTIMESTAMP 출력 열에 지정된 형식 문자열 값을 할당하는 경우, 포맷 변환 내재적 인
Output0Buffer.OutDate = dtDate.ToString(strFormat)
그리고 여기에 결과 파일의 링크는 다음과 같습니다
SQL 서버 날짜 암시 적 변환
모든 언어 설정과 함께 올바르게 해석이 날짜 문자열 형식이 있습니다.
yyyyMMdd yyyy-MM-ddTHH:mm:ss (ISO8601)
또한, 동일한 실험을하지만,하는 SqlCommand를 생성하고 실행하여이 시간을 반복 할 수 있습니다 :
Dim sqlcmd as new SqlCommand("SELECT CONVERT(DATETIME,'" + dtdate.ToString(strFormat) + '")" sqlCmd.ExecuteReader()
SQLCMD는 예외가 발생하는 경우 당신이 할 수있는 그 방법은 그 형식으로 변환 할 수 없음을 의미합니다.
from https://stackoverflow.com/questions/42035354/ssis-source-format-implicit-conversion-for-datetime by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 10 로컬 임시 테이블 (저장 프로 시저의 범위에 대한) (0) | 2020.05.17 |
---|---|
[SQL] MySQL의 동적 열 이름을 선택하는 방법 (0) | 2020.05.17 |
[SQL] 업데이트 트리거 후 ORACLE : ORA-04091 테이블 오류를 돌연변이 해결 (0) | 2020.05.17 |
[SQL] 어떻게 BigQuery에 / SQL에서 데이터 다량의 열과 행을 바꾸어 하는가? (0) | 2020.05.17 |
[SQL] SELECT 작동하지 MySQL을 저장 프로 시저 (기본 질문) (0) | 2020.05.17 |