2016-06-22 2 views
0

SQL Server의 XML 문자열에서 날짜 값을 선택하는 코드는 다음과 같습니다. 문자열 값은 ddmmyy의 형식을 반환하며이 값을 테이블에 저장하기 전에 T-SQL datetime 유형으로 변환해야합니다.SQL Server에서 XML 문자열 값을 datetime으로 변환하는 방법

SELECT TOP 1 
    list.n.value('(DOB/@value)[1]', 'datetime') AS 'DOB' 
FROM 
    @ResultXML.nodes('/Variables') AS list(n) 

XML 파일 :

<Variables> 
    <DOB>111290</DOB> 
</Variables> 
+0

가능한 복제 (http://stackoverflow.com/questions/1509977/convert-varchar-into-datetime-in 의미하는 ISO8601해야한다 -sql-server) – artm

+0

그 대답은 다른 형식'mmddyy'입니다. –

답변

1

예 :

DECLARE @XML XML= 
'<Variables> 
    <DOB>111290</DOB> 
</Variables>'; 

SELECT CONVERT(DATETIME,STUFF(STUFF(@XML.value('(/Variables/DOB)[1]','varchar(max)'),3,0,'/'),6,0,'/'),3) 

먼저 당신은 당신이 날짜에이를 변환 할 3를 사용하는 것보다, 111290 대신 11/12/90를 얻기 위해 두 번 STUFF를 사용 (또는 다른 피팅 형식 : 독일어 ., 영국에 대한 - ... 사용) More details on CAST and CONVERT

베스트 날짜와 시간 값을 올바르게 저장하는 것이 었습니다. XML 내에서이 yyyy-MM-dd 또는 yyyy-MM-ddThh:mm:ssMore details on ISO8601

[SQL 서버에서 날짜로 VARCHAR로 변환]의
+1

고마워요. 나는 너의 것과 유사한 링크를 따라 답을 얻었다 : http://stackoverflow.com/a/13512238/475709 –

0

하면 SQL 2012+

당신은 이런 식으로 그것을 시도 할 수

Declare @String varchar(25)= '111290' 
-- If MMDDYY 
Select DATEFROMPARTS(iif(Right(90,2)>25,'19'+Right(90,2),'20'+Right(90,2)),Left(@String,2),Substring(@String,3,2)) 

-- If DDMMYY 
Select DATEFROMPARTS(iif(Right(90,2)>25,'19'+Right(90,2),'20'+Right(90,2)),Substring(@String,3,2),Left(@String,2)) 

Returns: 1990-11-12 
Returns: 1990-12-11 
관련 문제