2011-11-09 3 views
0

나는 잘 실행이 쿼리가 :SQL 이상한 변환

: 나는에 쿼리를 변경하는 경우

27/6/2011 19:12:28 
11/7/2011 19:18:54 
10/7/2011 11:49:35 
3/7/2011 17:41:53 

을 :

SELECT 
Value 
    FROM data 
    WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6' 

반환

SELECT 
VALUE, 
MONTH(Value) 
    FROM data 
    WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6' 

오류가 발생합니다. char 데이터 형식을 datetime 데이터 형식으로 변환하면 datetime 값이 범위를 벗어납니다.

도움이 될만한 정보 :

1) 값 열은 VARCHAR 유형입니다.

2) MetaDataId를 지정할 때 결과가 "날짜"인지 확인합니다. 확실히, 나는 IsDate (Value) = 1도 사용했고 모든 결과가 날짜인지 확인하기 위해 ISDATe (Value)를 사용했습니다 ...

I don ' 왜 이래서 이런 일이 벌어지고 있는지 ... 누가 단서가 있니?

+1

서버와 클라이언트가 모두 같은 지역에 있습니까? 예를 들어 SQL 서버가 실행 중입니까? 미국 영어 어디 27 개월 월 번호로 구문 분석 될 것인가? – Rup

+0

예 동일한 위치와 달 수 – ShadowG

+0

으로 분석됩니다 * 나는 이와 같은 임의의 데이터 저장을 지원하는거야, 내가 (대신으로 VARCHAR로/모든 변환보다 더 적절한 유형의 열을 포함 할 경우이 왜, * 내가 좋겠 대개 해당 키와 검사도 포함하므로 메타 데이터가 날짜 일 경우 날짜 열만 채울 수 있습니다. –

답변

3

데이터 형식을 datetime으로 명시 적으로 변환해야합니다.

SELECT 
VALUE, 
MONTH(Convert(DateTime, Value,103)) as [Month] 
    FROM data 
    WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6' 
+0

은 훌륭합니다! 감사합니다. – ShadowG

+0

'dd/mm/yy' 형식이'CAST'에 의해 처리되지 않는 것을 알지 못했습니다. nice –