トップ回答者
SQL-Sqrverで月ごとにグルーピングして集計したい

質問
-
SQL-Server2005を使用しています。
YYYY/MM/DDの日付データを年月でグルーピングして、集計をしたいのですが日付をYYYY/MMに
変更することができません。
T-SQLを使用せず、SQL文で日付の書式を変更したいのですが、どなたか教えていただけないでしょうか。
もしくは、他の方法で年月で集計する方法があれば教えていただけないでしょうか。
【行いたいこと】
2010/09/30 → 2010/09 とYYYY/MMとしたい。(もしくは201009でも可)
Oracleなら
to_char(日付カラム,'YYYY/MM')ですよね。
SQL-Serverに慣れておらず難航しています。
どうぞよろしくお願いいたします。
回答
-
CONVERT関数とSUBSTRING関数を組み合わせることで実現できます。
(@ymdはdatetime型の値が格納されていると考えてください)
CONVERT関数で日付から文字列に変換(この例では、'yyyy/mm/dd'に変換しています)
・CONVERT(varchar(10), @ymd, 111)
文字列型に変換した値から年・月のみ抜き出す。
・SUBSTRING(CONVERT(varchar(10), @ymd, 111), 1, 7)
CONVERTの引数などはSQL ServerのBooks Onlineを参照してください。
(CONVERT関数の引数って、日付フォーマットではなく数値パラメータを使うので、今一つわかりにくいんですよね)
すべての返信
-
CONVERT関数とSUBSTRING関数を組み合わせることで実現できます。
(@ymdはdatetime型の値が格納されていると考えてください)
CONVERT関数で日付から文字列に変換(この例では、'yyyy/mm/dd'に変換しています)
・CONVERT(varchar(10), @ymd, 111)
文字列型に変換した値から年・月のみ抜き出す。
・SUBSTRING(CONVERT(varchar(10), @ymd, 111), 1, 7)
CONVERTの引数などはSQL ServerのBooks Onlineを参照してください。
(CONVERT関数の引数って、日付フォーマットではなく数値パラメータを使うので、今一つわかりにくいんですよね) -
こんにちは、junjunju さん。
MSDN フォーラムのご利用ありがとうございます。フォーラム オペレーターの山本です。
CatTail さんからの投稿で解決されたようでしたので、私のほうで回答としてマークさせていただきました。
CatTail さん、アドバイスありがとうございます。
MSDN フォーラムでは、得られた返信の中の有効な情報には回答としてマークすることをお願いしています。
回答としてマークすることで、今後同じ問題でこのスレッドを参照される方にも、解決に役立った情報や、参考になった投稿など、有効な情報が分かりやすくなるかと思います。お手数ですが、次回からご協力よろしくお願いしますね。
今後とも、MSDN フォーラムをよろしくお願いいたします。それでは。
マイクロソフト株式会社 MSDN フォーラム オペレーター 山本 春海