• ベストアンサー

TIMESTAMPを検索するフォームを設けたい

HTMLで上下にフレーム分割し、 ・上段が検索フォーム ・下段が問い合わせ結果のリストアップ、 という構造があるのですが、MYTIME (timestamp(14))という フィールドの検索フォームはどのように設けるのが一般的でしょうか。 例えば、 ・7月1日以降にデータが更新されたレコードのみ抽出、 ・今日の12:00以降に更新されたレコードのみ抽出、のように用いたいです。 MYTIMEには、 20051221080904 20060701194647 などのレコードがあります。 timestampでなく、date型なら、↓のように、 yyyy-mm-dd、yyyy/mm/dd、yyyymmdd書式で問い合わせができることを経験してます。 select myfield,mytime from myfield where mytime >= '20060714' select myfield,mytime from myfield where mytime >= '2006/07/14' select myfield,mytime from myfield where mytime >= '2006-07-14' そのとき、検索フォームは <input type="text" name="date_more" maxlength="10" title="yyyy-mm-dd、yyyy/mm/dd、yyyymmdd書式で入力">以降 <input type="text" name="date_less" maxlength="10" title="yyyy-mm-dd、yyyy/mm/dd、yyyymmdd書式で入力">以前 ・・などとしました。 今回のTIMESTAMP型も、↑と同じでいけますか? 年月日と時分秒は分割したほうがよかったりするのでしょうか? そうすると、SQL文に渡す前に、年月日.時分秒 のようにくっ付けて WHERE条件に加えることになりますよね? 標準的な方法をご教示ください。

  • PHP
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

標準的な方法かは分かりませんが。 <select>年<select>月<select>日<select>時<select>分 ~ <select>年<select>月<select>日<select>時<select>分 $sdate = "{$y1}-{$m1}-{$d1} {$h1}:{$min1}:00"; $edate = "{$y2}-{$m2}-{$d2} {$h2}:{$min2}:00"; $sql = "select * from myfield where mytime >= '{$sdate}' and mytime < '{$edate}'";

litton101
質問者

お礼

tany180sxさん、レスありがとうございました。 具体的なプログラム例までご提示いただきありがとうございました。 ご教示の方法でトライしてみます。 ありがとうございました。

その他の回答 (1)

  • awazak
  • ベストアンサー率36% (61/165)
回答No.1

私は、検索フォームの入力方法は、 年、月、日、必要に応じて、時、分、秒でそれぞれプルダウンで分けます。 また、それが一般的な方法だと思います。

litton101
質問者

お礼

awazakさん、レスありがとうございました。 ちょうど、#2さんも同じようなアイデアくださいましたね。 ご教示の方法でやってみます。ありがとうございました。

関連するQ&A

  • to_timestampを使ったアップデート

    オラクル初心者です。 「to_timestamp」を使用したデータベースへの書き込みのSQL文が分かりません。 ツールは「つみきWEB」を使用しています。 フィールドの形式は to_timestamp(yyyy/mm/dd hh24:mi:ss.ff3)です。 行ったコマンドは以下に示します。 update (テーブル名) set (書き込みを行うフィールド) = to_timestamp('11/11 11:11:11' 、'yyyy/mm/dd hh24:mi:ss.ff3') WHERE (条件)

  • ACCESS フォームで入力した日付をクエリで読み

    ACCESS フォームで入力した日付をクエリで読み替えたい ACCESS フォームで入力した日付をクエリで使用しているテーブルの書式に変換したい フォーム テキスト名:日付にyyyymmdd で入力します クエリ テキスト名:日付はパラメータとして使用しています クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです パラメータは 「日付始」と「日付終」の2箇所のテキストに入力されたデータを使用しています。以下がパラメータです。 Between [Forms]![フォーム]![日付始] and [Forms]![フォーム]![日付終] フォームのテキストボックスにyyyymmddと入力してもクエリでエラーが出ることない パラメータを日付に設定したいのですがどうしたらよいでしょうか? ちなみに、以下の式を入れたらエラーです。 Between CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) and CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) と入力しましたところ、、、、「式が複雑すぎるか、、、」のエラーメッセージが出てしまいました。 どなたか助けてください。お願い致します。

  • nvarcharとdatetimeで作成された日付の抽出方法について

    SQL Server 2005 EXPRESSを使って、 nvarchar型で作成されたyyyy/mm/ddの日付と datetime型で作成されたyyyy/mm/ddの日付を比較し WHERE '2007/05/04' > gettime()のようなSELECT文の WHERE句を使って該当レコードを表示することが可能であれば 教えてください。 以上、宜しくお願いします。

  • ACCESSのDate関数について

    会社のDBにACCESSで繋いで必要な資料を作成しています。そのDBの日付の書式がyyyymmddの型になっていて、クエリの抽出条件でdate()と入力しても上手くいきません。そのために、left(date,4)&"/"&mid(date,5,2)&"/"&right(date,2)としてyyyy/mm/ddの型に直して抽出しています。このやり方だとクエリの実行にとても時間がかかります。yyyymmddのままでパラメータを指定して20070630と入力すると10秒かからずに表示されますが、yyyy/mm/ddの型に直してdate()にすると3分近くかかります。yyyymmddのままでdate()を使う方法はありますか?

  • 同じ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文を変更してみたのですが、 同じエラーが続いています。 何か思い当たることがありましたら 教えていただければと思います。

  • MySQLでTIMESTAMP型の列から現在日付の1週間以内のデータ検索をSQL文で

    タイトルの通りですが、MySQLのSELECT文についてです。 以下のようなテーブルがあったとします。 MEMBER{ ID SMALLINT M_DATE TIMESTAMP} このテーブルのM_DATEが現在の日付から一週間以内であるレコードの検索を以下のようなSQL文で実行しました。 SELECT * FROM MEMBER WHERE M_DATE BETWEEN (NOW() - 00000000070000) AND NOW(); 最初はこれでOKだと思っていたのですが、月をまたいだりした時に抽出されるべきではないレコードが表示されるので間違いに気付いたのですが、どう修正すべきなのか分からない状況です。 どなたか良い方法があれば、教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • Timestamp型への変換について(Java)

    Java実行時の引数(args[i])の値を、 Timestamp型に変換してSQLにセットしたいのですが、 Timestamp型への変換がうまくいかず、 例外として ===== java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] ===== と表示されます。 ちなみに入力値は、 YYYYMMDDhhmmssの形式で、下記のように入力しています。 ===== 20110810000000 ===== APIなどを読んでvalueOfメソッドなど使ってみたのですが。。。 分かる方教えてください!

    • ベストアンサー
    • Java
  • 「今日の日付を含む」と言う条件のクエリ(yyyy/mm/dd hh:mm形式)

    テーブル1の 日付フィールドには「yyyy/mm/dd hh:mm」形式にしているため 「2009/02/28 0:30」と入力されています。 クエリ1に SELECT テーブル1.日付 FROM テーブル1 WHERE (((テーブル1.日付)=Date())); とした場合は 「2009/02/28 0:30」 は表示されません。 テーブル1の 「2009/02/28 0:30」を「2009/02/28 0:00」にすれば クエリ1を実行すると「2009/02/28 0:00」のレコードが表示されます。 どうすれば日付+時間の場合も日付で抽出することができるのでしょうか? アクセス2003です。 よろしくお願いします。

  • Timestamp(?)の値を変換したい

    画面遷移の正当性をチェックしたり、キャッシュ利用を防ぐために、Postdataに現在日時を数値化した値(TimeStamp?)がセットされていたりする場合があります。 ex.1205558668656 この値をExcelやVBAなどでYYYY/MM/DD hh:mm:ssの形式に変換したいのですが、どのように行えばよいのでしょうか。

  • select文について

    SQLで情報を抽出しようとしています。 情報はFAX受信枚数です。 select distinct count(*)from <datebase A> where <page_no>='6' and to_char(receive_date,'yyyy/mm/dd') between 'YYYY/MM/DD' and 'YYYY/MM/DD'; 上記の構文だと、PAGE 6/6のついでに PAGE6/8なども一緒くたに情報を引っ張ってくると思われます。 今回知りたい情報はPAGE 6/6の受信枚数のみ なのですが、どうすれば条件に当てはまる式になるでしょうか。 なお、情報項目には、6/6を示す情報はありません。

専門家に質問してみよう