2012-06-14 3 views
0


간단한 해결책을 찾고 있습니다.
내가 this-
주어진 연도 간격으로 년/월 형식을 선택하십시오.

SELECT DISTINCT DATEPART(year, colDate) AS 'Year'  --result=> 2012 
FROM MyTable 
WHERE YEAR(colDate)>='2012' 
AND YEAR(colDate)<='2013' 

에 의해 년의 주어진 간격 년을 선택할 수 this-

SELECT DISTINCT DATEPART(month, colDate) AS 'Month' --result=> 4 
FROM MyTable 
WHERE YEAR(colDate)>='2012' 
AND YEAR(colDate)<='2013' 


에 의해 년의 주어진 간격으로 달을 선택하고 어떻게 직접 I 수 이 결과를 yyyy/MM 형식으로 선택 하시겠습니까? =>2012/04
이 문제를 해결할 수있는 방법이 있습니까?
관심과 성원에 감사드립니다.

답변

1

현재 접근법 (가장 중요한 where 절)과 비교하여 colDate 열이 존재하는 경우 실행 계획 및 잠재적 인 인덱스 사용 측면에서이 접근 방법을 훨씬 더 잘 찾아야합니다.

SELECT d = REPLACE(CONVERT(CHAR(7), d, 121), '-', '/') 
FROM 
(
    SELECT DISTINCT 
    d = DATEADD(MONTH, DATEDIFF(MONTH, '19000101', colDate), '19000101') 
    FROM dbo.MyTable 
    WHERE colDate >= '20120101' 
    AND colDate < '20140101' 
) AS x 
ORDER BY d; 
관련 문제