2015-01-04 3 views
0

전체 날짜가있는 열 COL1 (char 23)이있는 테이블이 있습니다. 예 : '2007-11-13 12 : 34 : 49 : 012'. 이제 나는 내 날짜를 '2007-11-12 59 : 59 : 59 : 999'(전날 마지막 순간)로 변경하고 싶습니다. 변환 매개 변수가 작업 속성을 사용하지 않는 이유는 무엇입니까? 내 쿼리 : "2007 년 11 월 12"이것은 내 문제입니다 :문자열을 날짜로 변환 중입니다. SQL

convert(varchar(10),convert(date,DateAdd(day,-1,COL1),121)) + ' 23:59:59:999' 

DateAdd(day,-1,COL1) 

후 내가 얻을. 마지막으로 다음과 같이 표시됩니다. "Nov 12 200 23 : 59 : 59 : 999"

+0

왜?! –

+3

당신이 조언을 구하는 모든 사람은 똑같은 말을 할 것입니다 : 날짜를 varchars로 저장하지 마십시오 –

+0

특별한 경우이며 이렇게해야합니다. – iTuj

답변

0

어때요?

select dateadd(millisecond, -1, dateadd(day, 1, cast(left(col1, 10) as datetime))) 
+0

이제 테스트 할 수 없습니다. 하지만 귀하의 쿼리 DateTime 및 반환 형식으로 varchar – iTuj

+2

@iTuj prefere 생각합니다. . . 취향에 대한 설명은 없습니다. 데이터베이스의 원시 형식으로 날짜/시간 값을 저장하고 사용해야합니다. 그러나, 정말로 원하는 경우에는'convert()'를 사용하여 값을 문자열로 변환 할 수 있습니다. –

0

VARCHAR (10) 데이터 시도의 VARCHAR (11)

+0

알아요.하지만 '2007 년 11 월 12 일'에서 '2007-11-12'로 변환하고 싶습니다. – iTuj

+0

@iTuj - 미안 해요 ... ' select @@ LANGUAGE' 문제를 재현하는 데 어려움을 겪고 있습니다. –

0

을 위해 매우 링 충분하지 않습니다 노력이 :

하지 당신이 구글 첫째
select cast(dateadd(ms, -1, cast(convert(varchar(8), cast(col1 as datetime), 112) as datetime2)) as varchar(23)) 
관련 문제