SQL Server 2008でdatetime型の項目からWhere句で該当日付の範囲データ抽出
photo by Steve-h
SQL Server 2008から、Date型、Time型が追加となりましたね。
SQL Server 2005までは、Datetime型しかなく「日付のみ保持したいのに…」とか、「時刻のみ保持したい…」という場合も、datetime型で代用していました。
ですが、日時をまとめて保持したい場合は、datetime型を利用します。
たとえば、 ‘2009/01/01’の値が入っている該当項目を抽出したいとき、下記のように問い合わせても抽出できません。
比較対象が、datetime型なので日付ではないからです。
SELECT * FROM hoge WHERE hoge_datetime = '2009/01/01'
こんなときに、convert関数を用いて、問い合わせ先の項目を日付比較ができるようキャストします。
SELECT * FROM busy WHERE Convert(NVARCHAR, hoge_datetime, 111) = '2009/01/01'
Convert関数で、上の例では、 hoge_datetime項目を指定スタイル(111(4桁の年、日本、yy/mm/dd))にキャストして比較されます。
MSDN SQL Server 2008 オンライン ブック CAST および CONVERT (Transact-SQL)
SQL Server Compact 3.5でもConvert関数は使用可能です。
関連するエントリー
- None Found