SQL Server データ型の変換
SQL Server でデータ型を変換するファンクションは、2通つある。
CAST と CONVERT である。
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)
(参考)