2013-03-20 3 views
0

이 타임 스탬프는 문자열로 테이블에 저장됩니다. 테이블을 쿼리 할 때 datetime 형식으로 변환하려면 어떻게합니까? 예를 들어문자열을 datetime으로 변환

는 :

declare @timestamp as nvarchar 
set @timestamp ='20130319092507.000000-000' 

나는 convert(datetime, timestamp, *n*)cast(timestamp as datetime)

+1

어떤 SQL Server 버전을 사용하고 있습니까? – Oded

+1

[왜 nvarchar 매개 변수의 길이를 지정하지 않습니까?] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar- without-length.aspx) 왜 'nvarchar'여야합니까? 움라우트와 파운드 기호가있는 타임 스탬프가 있다고 생각합니까? –

답변

2

에게 나의 첫번째 제안을 시도 : 테이블을 해결! 날짜/시간 값을 문자열로 저장하는 것을 중지합니다. 좋은 일은 아무 것도 없습니다. 예를 들어 열에는 20130231 또는 Hallowe'en 또는 This is not a date이 포함될 수 있습니다. 이제 필터링해야합니다. 고유 한 유효성 검사 외에도 날짜 작업을 수행 할 수있는 기능이 손실됩니다.

DECLARE @timestamp VARCHAR(32); 
SET @timestamp = '20130319092507.000000-000'; 

SELECT CONVERT 
(
    DATETIME, 
    LEFT(@timestamp, 8) + ' ' 
    + STUFF(STUFF(SUBSTRING(@timestamp,9,6),3,0,':'),6,0,':') 
); 
관련 문제