2014-10-13 3 views
0

어떻게 varchar (8) 날짜 형식 (dd/mm/yyyy) 인 ddmmyyyy를 변환 할 수 있습니까?varchar (ddmmyyyy)를 날짜 형식으로 변환

날짜 varchar (8) 매개 변수를 허용하는 저장 프로 시저가 있습니다.

데이터베이스에 삽입하기 전에 날짜 형식으로 변환하고 싶습니다. 날짜

+0

왜 varchar를 varchar로 다시 변환 하시겠습니까? 변환 (날짜, @ 날짜, 106)이 작동하지 않습니까? – Mukund

+1

db에 삽입하는 동안 varchar를 날짜로 변환 할 필요가 없습니다. db에 의해 자동으로 처리됩니다. INSERT INTO MyTable (createdDate) 값 ('dd/mm/yyyy')과 SQL Server에서 값을 찾습니다. – jadavparesh06

+0

http://stackoverflow.com/questions/5287427/how-to-insert-datetime-into-the-sql-database-table – jadavparesh06

답변

2

ddmmyyyy가 유효한 날짜 형식되지 않습니다 :

Conversion failed when converting date and/or time from character string. 

createdDate 열 유형 : 나는

INSERT INTO mytable(createdDate) VALUES (CONVERT(date, CONVERT(varchar(8), @date), 106)); 

오류를 사용했습니다. 먼저 문자열을 DATE/DATETIME으로 구문 분석 할 수있는 문자열로 만들어야합니다. 가장 빠른 방법은 SUBSTRING 조각을 mm/dd/yyyy 형식으로 간단하게 만드는 것입니다. 그것은 성공적으로 변환됩니다. 하지만 VARCHAR(8)이 있습니다. 따라서 어느 쪽이든 VARCHAR(10) (또는 더 나은 것은 단지 CHAR(10))이되도록 변경하거나 변경된 값을 보유 할 로컬 변수를 선언해야합니다. 예를 들어

:

DECLARE @Date VARCHAR(8); -- input parameter 
SET @Date = '25032014'; 

DECLARE @Date2 CHAR(10); 
SET @Date2 = SUBSTRING(@Date, 3, 2) 
      + '/' + SUBSTRING(@Date, 1, 2) 
      + '/' + SUBSTRING(@Date, 5, 4); 

SELECT @Date2, CONVERT(DATE, @Date2); 
-- 03/25/2014  2014-03-25 

편집 : 는 사실, 난 약간 간단한 방법을 발견했다. 이 방법으로 시작했지만 mmddyyyy과 반대로 ddmmyyyy과 작동하지 않는다는 것을 깨달았습니다. 나는 어쨌든 dd/mm/yyyy에 맞는 날짜 스타일 번호가 있다는 것을 놓쳤다. 따라서 단순히 들어오는 문자열에 슬래시 두 개를 추가 한 다음 CONVERT을 호출하면 "스타일"로 103을 사용해야 만 작동합니다. 첫 번째 솔루션과 마찬가지로 들어오는 매개 변수를 VARCHAR(8) 대신 VARCHAR(10) 또는 CHAR(10)으로 변경하거나 CHAR(10)이 될 로컬 변수를 만들어야합니다.

DECLARE @Date VARCHAR(8); -- input parameter 
SET @Date = '25032014'; 

DECLARE @Date2 CHAR(10); 
SET @Date2 = STUFF(STUFF(@Date, 3, 0, '/'), 6, 0, '/'); 

SELECT @Date2, CONVERT(DATE, @Date2, 103); -- 103 = dd/mm/yyyy 
-- 25/03/2014  2014-03-25 

변환 "스타일"은 CAST and CONVERT에 대한 MSDN 페이지에서 찾을 수 있습니다.

관련 문제