我找到了一个简单的解决方案
我可以在给定的年份间隔内选择月份 -
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
有问题吗?
感谢您的关注和回复。
答案 0 :(得分: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;