2012-12-20 3 views
0

저는 월과 연도를 비교하려고합니다. 그래서 저는 그것을 varchar로 변환합니다. 이 올바른지? SQL Server : VARCHAR 값을 비교하는 중

  • accmonth & accyear

    (case 
        when s."AccMonth" >= 1 and s."AccMonth" <= 12 
         then cast(rtrim(s.accmonth) + s.accyear AS varchar) end) 
    >= 
    cast(month(s.InitialChargeDate) as varchar) + cast(year(s.InitialChargeDate) as varchar) 
    
    유형 INT
  • InitialChargeDate의있는 유형이다 DATE
+2

최종 결과가 100 % 명확하지 않지만 datepart 함수를 살펴보십시오. http://msdn.microsoft.com/en-us/library/ms174420.aspx – PeterJ

답변

0

당신은 내장 사용해야하는 기능을 대신 VARCHAR로 주조의 :

Month :

,451,515,
SELECT MONTH('2007-04-30T01:01:01.1234567 -07:00'); 

반환 4

Year :

SELECT YEAR('2007-04-30T01:01:01.1234567-07:00'); 

반환 아마도

2

2007은 같은 것 할 수있는 더 좋은 방법 :

s.AccMonth = MONTH(s.InitialChargeDate) 
AND s.accyear = YEAR(s.InitialChargeDate) 

참고 : 주조 길이가없는 varchar에 기본 길이는 1입니다. 결과에 영향을 줄 수 있습니다.

+0

실제로 이들과 비교합니다. 두 .. –

+0

좋아, "비교"한다는 것은 무엇을 의미합니까? 게시 된 코드 슬라이스가 비교됩니다. 그것은 단지 연결없이 수행합니다. –

+0

길이 지정이없는 varchar로 캐스팅하는 경우 기본 길이는 30입니다. –

관련 문제