2015-02-05 4 views
0

를 반환하지로 캐스팅 날짜를 확인 나는 다음과 같은 쿼리가 :TSQL은 - VARCHAR 친숙한 형식

:

SELECT TOP 3 
    Person.Name AS PersonName, 
    SUBSTRING(CAST(Person.BirthDate AS varchar(38)), 1, 2) AS CenteryBorn, 
    Person.BirthDate AS CompleteDateTimeBorn 
FROM Person  

내가 원하는 것은 CenteryBorn 열이 날짜의 처음 두 자리를 갖는이 같은 뭔가를

PersonName CenteryBorn CompleteDateTimeBorn 

Fred   Ma   2000-03-16 00:00:00.000 

Tim   Se   1900-09-27 00:00:00.000 

Jenny   Ju   1901-06-20 00:00:00.000 

전체 문자열 :

PersonName CenteryBorn CompleteDateTimeBorn 

Fred   20   2000-03-16 00:00:00.000 

Tim   19   1900-09-27 00:00:00.000 

Jenny   19   1901-06-20 00:00:00.000 

은 내가 그러나 얻는 것은 이것이다 표현은 결국 Mar 16 2000 12:00AM이 될 것 같습니다.

CAST 문자열이 있지만 친숙한 형식이 아닌 기본 형식이 있습니까?

+0

월의 처음 두 문자 년대처럼 보이는합니다. 하위 문자열은 8에서 2입니다. – jarlh

답변

1

어떻게 사용에 대한 날짜 부분 기능을 사용할 수 있습니다 :

YEAR(BirthDate)/1000 
+0

감사! 그러나 어떤 이유에서든 "YEAR (BirthDate)/1000"+ Person.RestOfDate – user1531921

+0

CAST (YEAR (BirthDate)/100을 VARCHAR (100)과 같이 다른 문자열에 추가하려고하면 작동하지 않는 것처럼 보입니다. –

0

는 대신

substring(cast(datepart(y,person.birthdate) as varchar),1,2) 
0

사용 SELECT YEAR(Person.BirthDate)/100 AS CenteryBorn

+0

Century는'(Year (Person.BirthDate) + 99)/100'이됩니다. 1 세기는 1 년에서 100 년 사이입니다. 20 세기는 1901 년에서 2000 년 사이입니다. – HABO

+0

네, 맞습니다.하지만 테스트 데이터에서 OP가 원했던 부분을주었습니다. 게다가 그는 틀린 대답을 전혀 받아들이지 않았다. :) –