ASPで日付(期間)検索

このQ&Aのポイント
  • ASPを使用して書籍のデータベース(SQL7.0)に接続し、発行日を期間で検索する方法を知りたいです。
  • テーブル名「T_書籍」のフィールド名「発行日」を使用し、ASPで作成したテキストボックス「RDate1」と「RDate2」に入力した期間でデータを検索する方法を教えてください。
  • 現在データベースへの接続はできており、SQL文の一部を作成することまではできていますが、期間を指定する箇所がわかりません。おそらく「BETWEEN」を使用するのかと思いますが、具体的な方法を教えてください。
回答を見る
  • ベストアンサー

ASPで日付(期間)検索

お世話になります。 書籍のデータベース(SQL7.0)にASPを絡めて 検索のためのページを作っています。 書籍の発行日を 期間を区切って(Between...And...)検索したいのですが 行き詰まっています。 詳細は以下のとおりです。 データベースへの接続はできた状態になっています。 テーブル名:T_書籍 フィールド名:発行日 ASPでのテキストボックス名:RDate1,RDate2 strSQL="SELECT [発行日] FROM [T_書籍] WHERE [発行日] BETWEEN ..." この後が分かりません。 おそらく#が必要かと思いますが どうやったらいいのか・・・。 ぜひともお願いいたします。

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

  • ベストアンサー
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.2

#1の者です。 すみません。 間違ってました 「&」が抜けてました。 strSQL = strSQL & Month(RDate1) & "/" & Day(RDate1) & "/" & Year(RDate1) としてください。 ところで、RDate1,RDate2はテキストボックスなんですね。 変数と勘違いしてました。 ASPでは、当該ページのテキストボックスを直接参照できず、サブミットしたリンク元WebページからRequest.Form("RDate1")という形でテキストボックスの値を受け取ることになりますがこの辺はご了解下さい。 上記例では RDate1 = Request.Form("RDate1") といった形で、サブミットしたページのテキストボックスの値をいったん変数に入れていることを仮定してます。

holse1234
質問者

お礼

mfukuさん。 重ねてのご回答ありがとうございます。 おかげさまで滞りなく検索することができました。 そういえば変数について書いてませんでしたね。 わざわざご指摘いただきすいませんでした。

その他の回答 (1)

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.1

SQL7.0とは、SQL-Server 7.0ですよね? 基本的に、日付検索をする場合は 'MM/DD/YYYY' の形で指定してください。 従って、 strSQL = "SELECT [発行日] FROM [T_書籍] WHERE [発行日] BETWEEN '" strSQL = strSQL & Month(RDate1) & "/" & Day(RDate1) & "/" Year(RDate1) strSQL = strSQL & "' AND '" strSQL = strSQL & Month(RDate2) & "/" & Day(RDate2) & "/" Year(RDate2) & "'" で良いかと思います。 #は必要ありません。

holse1234
質問者

補足

mfukuさん 素早い回答ありがとうございます。 SQL7.0というのは、仰るとおりSQL-Server7.0のことです。 早速試してみたのですが 以下のようにエラーになってしまいました。 (3行目は加工してあります) Microsoft VBScript コンパイル エラー エラー '800a0401' ステートメントの末尾が不正です。 /xxxx/xxxx.asp, 行 x strSQL = strSQL & Month(RDate1) & "/" & Day(RDate1) & "/" Year(RDate1) -------------------------------------------------------^ ちなみにデータベース上の「発行日」のデータ型は smalldatetime ですが datetime型にしても結果は同じでした。

関連するQ&A

  • DateTime型の検索

    お世話になっております。 質問内容は基本的な事かもしれませんがご容赦ください。 あるテーブルにDateTime型のフィールドがあり、Insertした日時を保存しています。 このフィールドに対して、日付のBETWEENや時間のBETWEENで検索かけるにはどうしたら良いのでしょうか。 例えば、 時間は未指定だけど、1月1日から1月31日までのデータを検索 SELECT * FROM table WHERE insertDT BETWEEN '01-01' AND '01-31' 日付は不明だけど、7:00から12:00までのデータを検索する等です。 SELECT * FROM table WHERE insertDT BETWEEN '07:00' AND '12:00' これら試しましたが、正常な結果が得られず困っています。 不明な部分の代替文字でもあるのでしょうか。 SELECT * FROM table WHERE (insertDT >= '07:00' AND insertDT <= '12:00') これも試しましたがやはりダメでした。 どなたかご教示の程、よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • ASPでの日付の期間抽出についてですが。。

    nYear=2002 nMonth=10 '当月の最終日を取得 nLastDay = Day(DateSerial(nYear, nMonth + 1, 1 - 1)) DateTo=Nendo & "/" & nLastDay '当月の最初の日の位置を決定 nDay = 1 - Weekday(DateSerial(nYear, nMonth, 1)) + 1 DateFrom=Nendo & "/1" 'ローテーションの登録の確認 RotationSql="SELECT * FROM T_ローテーション " _ & "WHERE 社員ID='" & ShainID & "' and 労働日時 Between '" & DateFrom & "' And '" & DateTo & "' " _ & "ORDER BY 労働日時" -------- というSQLを使用したいのですが、SQL Serverで労働日時の型を日付型にすると「日付型の変換に失敗しました」と表示されて、期間抽出ができないのですが。。。

  • 日付の表示について

    お世話になります。 WEBの登録フォームより日々の更新情報を登録し、更新情報を表示するということをやっております。 データベースの【日付型】のデータで 例)2009/07/12 とあるのですが、 7月の情報や12日の情報を取り出したいのですが可能でしょうか? ご教授下さい。 一覧や並べ替えなどはできるのですが、、、 SQL文は以下のように書いております。 strSQL = "select * From テーブル名 Where 項目=" & ID & " ORDER BY IN_DATA DESC"

  • jspでMysql検索で困っています。

    jspでMysql検索で困っています、 コマンド画面で下記の入力をすると条件の検索が出来ます。 select * from kanagawa where fish like '%コイ%'; (8件中検索されるのは1件でそれが表示されます) jspで命令すると、違う結果が返されてきます。 String sql; sql="select * from kanagawa where fish like '%コイ%'"; ResultSet rs=db.executeQuery(sql); 最初は変数でテーブル名等受け取っていたのですがうまくいかなかったので直接検索文を入れたのですが結果は同じく違う物が検索されてしまいます。(fishのフィールド8件中5件が結果としてでます。) 何を調べても間違いなさそうですが・・ どうにもならず困っています、助けてください、お願いします。

  • 日付型について

    Oracleの日付型で苦労しております。 教えてください。 言語 ASP(VBscript) データベース Oracle 下記のようなプログラムを作成しました。 STARTTIME=CDate(2010/2/16 13:00:00) SYURYOTIME=CDate(2010/2/16 14:00:00) SQL="SELECT * FROM TABLE " SQL=SQL & "WHERE TO_CHAR(Field,'yyyy/mm/dd HH24:MI:SS') BETWEEN '" & STARTTIME & "' AND '" & SYURYOTIME & "'" Set rs0 = OraDatabase.DbCreateDynaset(SQL, 0) この場合は予想通りの結果を返します。 しかし、時刻を10時以前の STARTTIME=CDate(2010/2/16 08:00:00) SYURYOTIME=CDate(2010/2/16 09:00:00) にすると予想外の結果を返しません。 これは、Oracle側の形式"2010/2/16 08:00:00"で、 CDate関数側が"2010/2/16 8:00:00"となってしまうためと考えていますが、対応方法がわかりません。 何卒、ご教授くださいますようお願い致します。

  • 同じSQL文での検索結果が異なる

    visualbasic2005とoracleを使ってデータベース管理ソフトを作っています。 ひとつのデータのフィールドはいくつかあるのですが、 DATAUPLOADというフィールド値をSQL文で検索するときのみ、 土曜日のデータを拾おうとするとなぜか検索をかけるごとに 件数が1件ずつ減っていくという現象が起きています。 他のフィールドや土曜日以外のフィールドの検索の時には そのようなエラーは起こらないのですが、 同じSQL文で検索結果が随時異なってしまう場合には どのような原因が考えられますでしょうか? DATAUPLOAD は'2008/03/12 00:00:00'の形式のDate型データです。 あるDATE(日付)のデータを検索するときに使用しているSQL文は、 SELECT * FROM DATABASE WHERE DATEUPLOAD BETWEEN TO_DATE(' & CStr(Format(DATE, "yyyy/MM/dd")) & 00:00:00','yyyy/MM/dd hh24:mi:ss') AND TO_DATE(' CStr(Format(DATE, "yyyy/MM/dd")) & 23:59:59','yyyy/MM/dd hh24:mi:ss') です。 いろいろとSQL文を変更してみたのですが、 同じエラーが続いています。 何か思い当たることがありましたら 教えていただければと思います。

  • 条件検索の方法について

    フィールド (name) に「いちごがむ」「いちごじゅーす」「みかんがむ」「みかんじゅーす」がある場合、文字の先頭に『いちご』がつく情報を抽出するsql文は以下になります。 SELECT * FROM test WHERE name LIKE 'いちご%' では、フィールド (name) に「いちご」「みかん」があるとします。 検索文字『いちごがむ』(もしくは『いちごじゅーす』)からnameの「いちご」箇所を抽出するにはどのようなsqlを発行すればよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLで期間指定でキーワード検索するには?

    PHPでMySQLを利用し開発を行っています。 検索ボックスにキーワードを入力して検索をしたいのですが、期間を指定して検索できるようにする方法が分かりません。 さらに1ページに五件ずつ表示するようにしています。 下記はキーワード検索として動いているプログラムです。 例は2つのフィールドから検索しています。 SELECT * FROM テーブル名 WHERE フィールド名1 LIKE '%$search%' OR フィールド名2 LIKE '%$search%' LIMIT 0, 5; これに BETWEEN 期間1 AND 期間2  を追加して完成させようと思っているのですが、 どうも上手くいかないので、どのように書けばよいか教えて下さい。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • WHERE句だと抽出できない VBA ADO

    アクセスのADOについて質問があります。 SQL文の中でWHERE句を使ってフィルタをすると返り値が0件になるのに、 rs.Open strSQLした後に、 rs.Filterで抽出すると、適切な数値が返ります。 具体的に言うと 【1】 strSQL = "SELECT T_会社名.*, T_会社名.住所 FROM T_会社名 WHERE (((T_会社名.住所) Like ""*埼玉*""));" rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic i = rs.RecordCount 【2】 strSQL = "SELECT T_会社名.*, T_会社名.住所 FROM T_会社名;" rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic rs.Filter = "T_会社名.住所 like '%埼玉%'" i = rs.RecordCount だと、【2】が、適切な数値が返ります。 なぜ【1】はダメなのでしょうか?

  • ACCESS 日付検索がうまくいきません

    下記の形式でテーブルに日付データ(訳ありでテキスト型)が格納されています。 yyyy/mm/dd hh:mm:ss 日付のみ入力し下記のSQLで検索してもFromTimeの日付のみのデータしか検索できません。 SELECT * FROM T_A WHERE Access_Time BETWEEN #" & FromTime & "# AND #" & ToTime & "#" (例) FromTime  ToTime 2007/01/01 2007/01/05 2007/01/01のデータしか検索できない。 時間が邪魔してできないのでしょうか? (無理矢理「*」を組み込んだのですがダメでした・・) どなたか教えてください。お願いします。

専門家に質問してみよう