人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: db_Magician
●カテゴリ:コンピュータ
✍キーワード:00 2006-07-29 Char ODBC SELECT
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Allashe
●60ポイント

エラーの原因は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関数、今度試してみたいと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ