こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

日付の範囲検索がしたい

お世話になります。

テーブル名:info
フィールド名:no,date,name
フィールドのデータタイプ:int型,char型,char型

のデータベースがあります。dateにはyyyy/mm/ddの形でデータが入っているのですが、
そのdateから、例えば2004/01/01~2005/01/01までに該当するデータを検索して、抽出したいのですが、方法がわかりません。

SELECT REPLACE(date, '/', '') FROM info

で、“/”がないデータを取り出すことはできるのですが、その後どうしたら良いかがわかりません。
どなたかいい方法教えていただけないでしょうか?

投稿日時 - 2005-03-24 17:00:50

QNo.1288662

すぐに回答ほしいです

質問者が選んだベストアンサー

SELECT * FROM info WHERE date BETWEEN '2004/01/01' AND '2005/01/01'

で取れませんか?

投稿日時 - 2005-03-24 18:08:46

補足

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

教えていただいた方法を試したのですが、
「サーバー : メッセージ 245、レベル 16、状態 1、行 1
構文エラー。varchar 値 '2004/09/13' から int データ型に変換できませんでした。」
というエラーが出てしまいました。
なぜ出てきたのでしょう?
もしかして、データの入力をVBScriptで作成したASPのページから行っている所為なのでしょうか?

投稿日時 - 2005-03-24 18:29:40

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

misty7666さんの書き方で取れると思います。

SQL文の日付の指定部分ですが、シングルクォーテーション「'」で囲まれていないと「構文エラー・・・・」
が発生するので、その点を確認してみてください。

(「SELECT * FROM info WHERE date BETWEEN 2004/01/01 AND 2005/01/01」とかになってませんか?)

投稿日時 - 2005-03-24 21:55:43

お礼

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

できました!
原因は、フィールド内に入っていたゴミデータの所為でした。
テストデータで試していたので、「1/1/2005」や「1/1」みたいな変な形式のデータがあったのですが、それらを消すもしくはyyyy/mm/ddの形に直したら、misty7666さんに教えていただいた方法でできました。

回答してくださったみなさん、本当にありがとうございましたm(_ _)m

投稿日時 - 2005-03-24 22:09:05

ANo.2

select * from info
where date between
to_char('2004/01/01','yyyy/mm/dd')
and
to_char('2005/01/01','yyyy/mm/dd')
;
ではどうでしょうか。

投稿日時 - 2005-03-24 19:02:52

補足

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

教えていただいた方法は、そのままコピー&ペーストしていいんですよね?
コピペで行った結果、
「サーバー : メッセージ 195、レベル 15、状態 10、行 3
'to_char' は 関数名 として認識されません。」
とエラーを出されてしまいました・・・

投稿日時 - 2005-03-24 19:25:36

あなたにオススメの質問