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
有没有办法解决这个问题?
感谢您的关注和回复。

4

1 回答 1

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;
于 2012-06-14T03:08:11.303 回答