SQL Server2000初心者です。


下記のようにしてデータテーブルの日付を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日付形式を、その他の日付形式に変換する方法を教えてほしいです。
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/07/31 00:39:00
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:Allashe No.1

回答回数59ベストアンサー獲得回数5

ポイント60pt

 エラーの原因は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で表示されます。

id:db_Magician

回答ありがとうございます。

convert関数、今度試してみたいと思います。

2006/07/31 00:38:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません