2017-03-20 13 views
0

텍스트로 저장된 날짜 열인 열이 있습니다. 세 가지 형식이 있습니다.텍스트로 저장된 여러 날짜 형식을 변환하십시오.

  1. DD의 음의 YYYY
  2. MM/DD/YYYY
  3. YYYY-MM-DD
나는 하나의 형식으로 모든 변환해야

enter image description here

. 임 희망 112 (yyyymmdd)

범위 초과 오류가 계속해서 도움이 될 수 있습니다.

는 나는이 제대로

CONVERT(varchar(10), ISNULL(CAST(cf3.FieldValue as date),CAST('01/01/1900' as date)),101) 

돌아 가지고있다하지만 그 범위 오류없이 형식은 yyyymmdd로 변환하는 것 캔트.

+0

어떤 샘플 코드/데이터가 있습니까? – tarheel

답변

2

입력 :

01 Jan 1900 
12/5/2013 
2013-12-10 

검색어 :

SELECT CONVERT(VARCHAR, CONVERT(DATE, TestColumn), 112) 
FROM tblTestTable 

출력 :

19000101 
20131205 
20131210 

사용하여 SQL 서버 2008 R2

0
declare @mydate datetime = '2017-03-20' 

select RIGHT('0' + CAST(DATEPART(DD,@mydate) as nvarchar(max)),2) + ' ' + UPPER(CAST(DATENAME(month,@mydate) AS VARCHAR(3))) + ' ' + CAST(DATEPART(YEAR, @mydate) as nvarchar(MAX)) as 'dd mmm yyyy', 
RIGHT('0' + CAST(DATEPART(DD,@mydate) as nvarchar(max)),2) + '/' + RIGHT('0' + CAST(DATEPART(MONTH, @mydate) as nvarchar(Max)),2) + '/' + CAST(DATEPART(YEAR, @mydate) as nvarchar(MAX)) as 'dd/mm/yyyy', 
CAST(DATEPART(YYYY,@mydate) as nvarchar(max)) + '-' + RIGHT('0' + CAST(DATEPART(MONTH, @mydate) as nvarchar(Max)),2) + '-' + RIGHT('0' + CAST(DATEPART(DD, @mydate) as nvarchar(MAX)),2) as 'yyyy-mm-dd' 

수동으로 날짜의 해당 날짜 부분을 가져 와서 직접 서식을 지정할 수 있습니다. (필요한 형식을 사용할 쉽게하지 않은 경우)

+0

그건 내가 알아 낸 것 하나 다른 형식에 대해서는 작동하지 않습니다. –

+0

@ LucasPerrett 다른 형식의 문제점은 무엇입니까? 오류가 있습니까? 잘못된 형식입니까? –

1

당신이 원하는 결과를 얻기 위해 DATE_FORMATSTR_TO_DATE의 조합을 사용할 수 있습니다.

SELECT 
IFNULL(
    DATE_FORMAT(STR_TO_DATE(COL_NAME, '%d %b %Y'), '%Y%m%d'), 
    IFNULL(
    DATE_FORMAT(STR_TO_DATE(COL_NAME, '%d-%m-%Y'), '%Y%m%d'), 
    DATE_FORMAT(STR_TO_DATE(COL_NAME, '%Y-%m-%d'), '%Y%m%d') 
) 
) FROM TABLE_NAME; 

STR_TO_DATE날짜 데이터 형식으로 문자열을 변환합니다 다음 DATE_FORMAT 원하는 형식 ('%Y%m%d' ->'yyyymmdd')로 날짜를 변환합니다.

+0

이것은 SQL Server입니다. STR_TO_DATE 함수가 없습니다. 그러나 이것은 편리한 감사입니다. –