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 に答える