SQL Server データ型の変換 | WEBエンジニア社長のブログ

SQL Server データ型の変換

SQL Server でデータ型を変換するファンクションは、2通つある。

CASTCONVERT である。


CAST の書式は、

CAST(データ型を変換したい値 as 変換後のデータ型)


例えば、このように使う。

select CAST(order_date as varchar(20)) from orders


私がよく使うのは、月間の注文数を一覧表示したいときなどである。

GROUP BY と組み合わせて使うと、カーソルは必要ない。簡単なクエリで済む。

これである。


select Left(CAST(order_date as varchar(10)),7), count(*) as 注文数 from orders group by Left(CAST(order_date as varchar(10)),7)


order_date 列は、 datetime データ型であり、注文日時が保存されている。

それを、CAST(order_date as varchar(10)) として、年月日を文字列に変換するのである。

ただし、ここで1つ注意が必要である。

確か、OSの地域の設定だったと思うが、datetime型を文字列に変換した場合、

「2010/01/01」となる場合や、「01 01 10」となる場合があるので、あらかじめ確認が必要である。


今回の例は、「2010/01/01」と表示されることを前提としている。



CONVERT はデータの書式を指定できる。

例えば、convert(varchar(10),order_date, 111) とすると、yy/mm/dd 「10/01/01」と表示される。


そこで、先ほどの月間注文数を一覧表示する例は、このように書ける。


select Left(convert(varchar(10),order_date, 111),7), count(*) as 注文数 from orders group by Left(convert(varchar(10),order_date, 111),7)


(参考)

マイクロソフト msdn