下記のようにしてデータテーブルの日付をbetweenで
絞り込んで検索したいのですが、
「CHAR データ型から DATETIME データ型への変換の結果が日付/時刻の値の範囲外です。」
というエラーが出てしまいます。
declare @zikan1 datetime,@zikan2 datetime
set @zikan1 = '2006-07-29 00:00:00.000'
set @zikan2 = '2006-07-29 09:00:00.000'
select * from datatable
where nyuka between @zikan1 and @zikan2
調べたところ、ODBC日付形式を使用したためこのエラーが出たようです。
そこで、@zikan1と@zikan2に格納するODBC日付形式を、その他の日付形式に変換する方法を教えてほしいです。
よろしくお願いします。
エラーの原因はODBC日付形式を使ったからではなく、「'2006-07-29 00:00:00.000'」という文字列型データを、datetime型にセットしようとしたからだと思います。datetime型は、日付シリアルに変換する必要があります。
こんな風にしたらどうでしょう。
set @zikan1 = convert(datetime,'2006-07-29 00:00:00.000')
set @zikan2 = convert(datetime,'2006-07-29 09:00:00.000')
あるいは日付シリアルを直接入れてやるか、です。
set @zikan1 = 38926
set @zikan2 = 38926.375
ちなみに、datetime型データをODBC以外の形式に変換するのもconvert関数を使用します。
select convert(varchar,@zikan,11)
とすると、yy/mm/ddで表示されます。
回答ありがとうございます。
convert関数、今度試してみたいと思います。