2012-06-14 51 views
0


我正在寻找一个简单的解决方案。
我可以通过这个 -
在给定的时间间隔内选择年/月格式

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


而选择年给定的间隔几个月,我可以通过这个 -

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

选择多年年给定的间隔哪有我直接以yyyy/MM格式选择这些结果? =>2012/04
有没有办法解决这个问题?
感谢您的关注和答复。

回答

1

您应该发现这种方法在执行计划和colDate列的潜在索引使用方面(如果存在的话)与您当前的方法(最重要的是where子句)相比要好得多。

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; 
相关问题