2017-11-16 1 views
0

형식이 dd/mm/yy이고 형식이 nvarchar(255) 인 가져온 데이터를 date 형식으로 변환하는 데 어려움이 있습니다. dd/mm/yyyy '형식으로 표시됩니다. 다음과 같이dd/mm/yy nvarchar (255)를 날짜 형식 dd/mm/yyyy로 변환하는 SQL 문

샘플 데이터는 다음과 같습니다

날짜 :

'23/10/17' 
'24/10/17' 
'25/10/17' 
'26/10/17' 
'27/10/17' 

날짜 형식에 : 나는 SQL 서버를 사용하고

'23/10/2017' 
'24/10/2017' 
'25/10/2017' 
'26/10/2017' 
'27/10/2017' 

2008 R2

+0

귀하의 질문에 구체적 제발, 당신은 일/월/연도와 날짜 형식을 원하는가 ? –

+0

'dd/mm/yyyy'에'CONVERT (datetime, imported_date_col, 103)'또는'dd/mm/yy'에'CONVERT (datetime, imported_date_col, 3)'을 사용하십시오. – Squirrel

+0

기본적으로 첫 번째 문제는 세기 2 자리 연도가 Y2K 문제입니다. 날짜가 26/11/16이라면 1916 또는 2016이 될 것입니다. ??? 일단 yy를 yyyy로 변환하는 문자열 조작을 확인하면 원하는대로 캐스팅/변환 할 수 있지만 규칙 없이는 우리가 쓰는 것은 아무 것도 없을 것입니다. – Matt

답변

2

는 CONVERT를 사용해보십시오.

SELECT convert(datetime, datecolumn, 103); 

은 자세한 내용이 도움이

http://www.sqlusa.com/bestpractices/datetimeconversion/

https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql

희망이 링크를 참조하십시오. 여기

+0

@Matt : 2 자리 연도 (나쁜 생각입니다!) 일 수 있습니다. "103"대신 "3"스타일 사용 - –

+0

@ marc_s DUHH를 참조하십시오. OP는 2 자리 연도를 3 자리 숫자로 변환하는 SQL 문을 요청하여 dd/mm/yy nvarchar (255)를 Date로 변환합니다. 형식 dd/mm/yyy'이고이 대답은 그렇게하지 않습니다 – Matt

+0

@Matt : "3 자리수"연도는 오타 일 뿐이며 * 네 자리 숫자 여야합니다 .... –

0

당신은 갈 :

WITH CTE AS (
    SELECT '23/10/17' AS MyDate 
    UNION 
    SELECT '24/10/17' 
    UNION 
    SELECT '25/10/17' 
    UNION 
    SELECT '26/10/17' 
    UNION 
    SELECT '27/10/17' 
    ) 
    SELECT * , 
      CONVERT(DATE, MyDate,3) AS MyDate, 
      CONVERT(VARCHAR, CONVERT(DATE, MyDate,3), 103) AS ExactFormat 
    FROM CTE; 

결과 :

+----------+---------------------+-------------+ 
| MyDate |  MyDate  | ExactFormat | 
+----------+---------------------+-------------+ 
| 23/10/17 | 23.10.2017 00:00:00 | 23/10/2017 | 
| 24/10/17 | 24.10.2017 00:00:00 | 24/10/2017 | 
| 25/10/17 | 25.10.2017 00:00:00 | 25/10/2017 | 
| 26/10/17 | 26.10.2017 00:00:00 | 26/10/2017 | 
| 27/10/17 | 27.10.2017 00:00:00 | 27/10/2017 | 
+----------+---------------------+-------------+ 

Demo