在给定的年份间隔中选择年/月格式

时间:2012-06-14 03:02:05

标签: sql sql-server tsql


我找到了一个简单的解决方案 我可以在给定的年份间隔内选择月份 -

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 个答案:

答案 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;