• ベストアンサー

日付の範囲検索がしたい

お世話になります。 テーブル名:info フィールド名:no,date,name フィールドのデータタイプ:int型,char型,char型 のデータベースがあります。dateにはyyyy/mm/ddの形でデータが入っているのですが、 そのdateから、例えば2004/01/01~2005/01/01までに該当するデータを検索して、抽出したいのですが、方法がわかりません。 SELECT REPLACE(date, '/', '') FROM info で、“/”がないデータを取り出すことはできるのですが、その後どうしたら良いかがわかりません。 どなたかいい方法教えていただけないでしょうか?

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

  • ベストアンサー
noname#11722
noname#11722
回答No.1

SELECT * FROM info WHERE date BETWEEN '2004/01/01' AND '2005/01/01' で取れませんか?

ryanpe-
質問者

補足

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

その他の回答 (2)

  • sawagani
  • ベストアンサー率73% (19/26)
回答No.3

misty7666さんの書き方で取れると思います。 SQL文の日付の指定部分ですが、シングルクォーテーション「'」で囲まれていないと「構文エラー・・・・」 が発生するので、その点を確認してみてください。 (「SELECT * FROM info WHERE date BETWEEN 2004/01/01 AND 2005/01/01」とかになってませんか?)

ryanpe-
質問者

お礼

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

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

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

ryanpe-
質問者

補足

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