2010-06-29 2 views
3

(으)로 변환하는 방법은 무엇입니까? Jan.08, Feb.08 .. 내가 그들을 정렬 할 수 있도록 날짜 형식으로?SQL 문자열 MMM.YY을 (를)

위대한 감사!

+2

이것은 사용중인 데이터베이스 관리 시스템 (DBMS)에만 의존합니다. Oracle, mySQL, SQL Server? ...이를 수행 할 표준 SQL은 없습니다. –

+0

i; SQL 서버 사용 – marilyn

+0

문자열이 지역화 되었습니까? 아니면 항상 특정 언어로? –

답변

5

관련 달의 첫 번째 전환 가능한 문자열로 형식을 지정한 다음 datetime에 캐스팅합니다.

SELECT 
    YourMonthAndYearColumnName 
FROM 
    YourTable 
ORDER BY 
    CAST('1.' + YourMonthAndYearColumnName AS DATETIME) 

... 당신이 찾고있는 무엇을 수행해야합니다

CAST('1.' + YourMonthAndYearColumnName AS DATETIME) 

는 ... 그래서, 정렬해야 날짜 시간을 얻을 것입니다 표현이다. 모든 날짜가 지난 10 년 이내가 될 것이라는 가정을 할 수있는 경우

+0

이 작품! 고맙습니다! – marilyn

0

, 다음과 같은 코드를 사용할 수 있습니다

모호 형식 "2008년 1월"로 문자열의 형식을
select convert(datetime, replace('Jan.08', '.', ' 20')) 
select convert(datetime, replace('Dec.08', '.', ' 20')) 

. "Dec.08"은 "올해 12 월 8 일"또는 "2008 년 12 월"일 수 있습니다.

매트 깁슨 (Matt Gibson)이 "1"을 앞에 두자는 제안을 사용할 수 있습니다. 전환 전 날짜까지 이로 인해 모호성이 제거되고 SQL 서버가 날짜 (즉, 50은 1950, 49는 2049)에 대한 기본값을 사용하는 이점이 있습니다.

select convert(datetime, '1.' + 'Jan.08') 
select convert(datetime, '1.' + 'Dec.49') 
select convert(datetime, '1.' + 'Jan.50')