2015年8月6日木曜日

SQL Serverで、date型のデータから、年月だけを重複なしで取得するSQL

SQL Serverで、date型のデータから、年月だけを重複なしで取得するSQLです。実は、よくわからない部分もあるのですが、とりあえず動きます(笑)。例えば、ブログのアーカイブなんかで利用する場合に便利に使えます。下の例では、createdatが日付型のデータ。monthYearは、最終的に結果として帰ってくる結果セット名(名前は何でも良い)。

SELECT monthYear FROM (
SELECT DISTINCT CONVERT(VARCHAR, DATEPART(month,createdat))  + ' ' + 
                CONVERT(VARCHAR, DATEPART(year,createdat)) monthYear, 
                CONVERT(VARCHAR(6),createdat, 112) createdat
FROM blog ) A
ORDER BY CONVERT(INT,createdat) DESC

monthYear
8 2015
7 2015
6 2015
5 2015
4 2015
3 2015
2 2015
1 2015
12 2014
11 2014
10 2014
9 2014
SELECT monthYear FROM (
SELECT DISTINCT CONVERT(CHAR(3), DATENAME(month,createdat), 0) + ' ' + 
                CONVERT(VARCHAR, DATEPART(year,createdat)) monthYear, 
                CONVERT(VARCHAR(6),createdat, 112) createdat
FROM blog ) A
ORDER BY CONVERT(INT,createdat) DESC

monthYear
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014

参考サイト
Select Distinct formatted dates in SQL(Stack Overflow)

0 件のコメント:

コメントを投稿