• 締切済み

MySQLでデータを時間範囲で抽出したい

mysqlでテーブルから、日付データが1ヶ月以内でかつ7時から8時までのデータを抽出する方法がわかりません。 テーブル内のtimeカラムにはタイムスタンプ型で日付が入っています。 time「2012-06-04 07:14:38」 time「2012-05-04 10:14:38」 time「2012-05-04 08:14:38」 time「2012-05-04 13:14:38」 SELECT * FROM table WHERE time >= DATE_ADD(NOW(),INTERVAL -1 MONTH) で1ヶ月以内のデータは抽出できたのですが、さらに7時から8時までのデータを抽出する方法が分からずかなり困っています。 どなたかご教授お願いいたします。

  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

http://dev.mysql.com/doc//refman/4.1/ja/date-and-time-functions.html time() で 時間が取得可能。 SELECT * FROM table WHERE (time_field >= DATE_ADD(NOW(),INTERVAL -1 MONTH)) and ('07:00'<=time(time_field)) and (time(time_field)<'08:00')

関連するQ&A

  • データ内の「\」や「'」を抽出するには

    データ内に「\」や「'」が含まれているデータを抽出するには SELECT * FROM table WHERE column LIKE '%\%' SELECT * FROM table WHERE column LIKE '%'%' で良いのでしょうか?

    • ベストアンサー
    • MySQL
  • アクセス クエリー抽出条件 今月初日から

    winXp access2003 クエリー デザインビューにおいて 日付フィールドを 今月の初日からで 検索したいのですが 抽出条件を >=""Year(Now())"/"Month(Now())"/"1"" >="Year(Now())"/"Month(Now())"/"1" これですと いずれも うまくいきません 抽出条件で データ型が一致しません とでます 宜しくお願い致します

  • MYSQLのフィールドにユニークキーを設定する。

    すでに作ってしまったテーブルにユニークキーを付けたいと考えています。最悪の場合、新しくカラムを作っての追加でもかまわないのですが、いろいろ試してもエラーが返されてしまいます。 codeというカラムにユニークキーを設定したいのですが、 alter table テーブル名 modify unique code; alter table テーブル名 add unique code2; alter table テーブル名 modify code unique; alter table テーブル名 add code2 unique; alter table テーブル名 modify code test unique; alter table テーブル名 add code2 test unique; alter table テーブル名 modify unique code test; alter table テーブル名 add unique code2 test; alter table テーブル名 modify (code unique); alter table テーブル名 add (code2 unique); alter table テーブル名 modify (code text unique); alter table テーブル名 add (code2 text unique); など、思いつく限り試し、グーグルで調べる限り調べたのですが、出てきたものをためしてもダメでした。 テーブルを作成した後、カラムにユニークキーを設定した経験のある方、どのように変更をしたのでしょうか?

    • ベストアンサー
    • MySQL
  • 現在時刻から3分以内の日付型のデータを取得したい

    いつもお世話になります。 表題とおりなのですが、 日付型のカラムがありまして、そのカラムを 「現在時刻から3分以内の日付型のデータ」 という条件でデータ抽出を行いたいのです。 なにかよい方法があればご教授お願いします。

    • ベストアンサー
    • MySQL
  • MySQL大量のデータから特定の項目を抽出する構造

    MySQLで10,000を超えるデータが有り、その中から最大6件まで指定して表示するプログラムを作る予定です。 6つの枠が有りそれぞれの枠にデータを選んでセットしていく形式です。 この場合データのテーブル側に枠にセットされていることを示すフラグのようなものを付けてそれをもとに抽出するか、別のテーブルにデータIDの記入された data1~data6 のカラムを作ってそれをもとに抽出するかどちらが速度・構造的に良いのでしょうか?

    • ベストアンサー
    • MySQL
  • 重複データより一番古いデータのみを条件付きで抽出

    カルテテーブルに登録されたデータから、 日時が2007-02-28以前で、 顧客ごとに一番古い(最初の)データのみを抽出し、 ショップ番号が1である顧客のみを、 絞り込みたいのですが、 教えてもらえますでしょうか?。 ※顧客の一番古いデータがショップ1以外であれば省きたい。 ※また、日付の期間中の抽出顧客ごとのカルテ数も知りたい。 (2回目以降は別の店舗とスタッフでもカウントする) MySQL 4.0.24-standardを使用しています。 カルテテーブル(chart_table) --------------------------------------- kokyaku | shop | staff | date | 1 1 1 2006-06-27 1 1 5 2006-12-11 2 1 2 2007-01-27 2 2 3 2007-02-07 3 3 4 2007-02-04 1 1 2 2007-03-12 結果1 --------------------------------------- kokyaku | shop | staff | date | 1 1 1 2006-06-27 2 1 2 2007-01-27 結果2 --------------------------------------- kokyaku | cnt | 1 2 2 2 何卒、よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • mysqlで年と月を別々のカラムに収納しています

    mysql5.1を利用してデータベースを作成しています。 テーブルに年と月を別々で収納しているのですが、 そのテーブルの中のデータから「今月を過ぎていなければ」という条件で抽出したいのですが、 SQLの書き方がわかりません。 私のSQLの基礎の基礎しか教えてもらっておらず、 あとは独学で、現在のレベルはようやく少しサブクエリを書き出した(学びだした)レベルです。 しかもwindows上のNavicat Lite(アプリ)上で書いてる状態です。 自分のイメージ的には下記のような感じなのですが、動きません。 どなたか教えていただけないでしょうか。 よろしくお願いします。 hoge_tblテーブルからBカラムが'hoge'かつ、 hoge_tblテーブル内のYEARカラムとMONTHカラムの値を今月と比較して、 「今月を過ぎていなければ」といった条件を付けたいと考えております。 select A from hoge_tbl where B = 'hoge' and (select date_format(now(),'%Y%m') as NOW) < (select date_format('(select YEAR,MONTH from hoge_tbl )’,'%Y%m') as END)

    • ベストアンサー
    • MySQL
  • データを同データが並ばないように並び替える

    こんにちは。 顧客からの質問で、どういう目的かはわからないのですが、あるカラムの中にさまざまな種類のデータがあります。それをソートの意味の逆、ばらばらに並び替えたいのでそのようなSQLを考えてほしいといわれました。 具体的に言いますと monthカラム ------------- 01 01 02 02 02 03 04 04 とあるテーブルを、SQLを発行してバラバラにする ↓ monthカラム ------------- 01 02 04 01 02 03 02 04 のようにしたいのです。バラバラにした時に一つ前のデータと一つ後ろのデータと重複しないようにすればO.K.です。 どうかよき知恵がありましたら教えてください。DBはサイベースです。

  • 直近データ抽出 VS WHERE文

    お世話になっております。 PHPにてMySQLのデータを取得するスクリプトを制作しています。 (MySQL5) 日付データ(DATE型)カラムを持つテーブルがあり、現在から直近日を取得したとき、そのデータが現在より1ヵ月以内のデータであるか否かを分別したいと考えています。 そこでお聞きしたいのは、データを参照する際、MAX()にて直近日を取得し、そのデータが1ヵ月以内であるか確認するパターンと、max()を使わず、WHERE(条件)にて、1ヵ月以内に収まる日付データがあるか確認しるパターンと、どちらが処理が速く済むのでしょうか? 他の処理を行うための条件なので、これら処理によりデータを取得する必要はなく、該当する日付があるか否か、という確認だけのものです。 お忙しいなか恐縮ですが、アドバイスのほど頂戴出来れば幸いです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • SQL 完全に一致したデータを検索抽出

    SQLのテーブルから完全に一致したデータを抽出するにはどうすればよいでしょうか。 仮に、dayとweatherの2つのカラムでテーブルを作成 <?php /* 検索フォーム */ ?> <form action = "index.php" method="post">           <table> <tbody> <tr> <th>月</th> <th>天気</th> </tr> <tr> <td><input type="text" name="day"></td> <td><input type="text" name="weather"></td> </tr> </tbody> </table> <input type="submit" name="submit" value="検索"> </form> <?php /* 検索 */ ?> <?php ~略~(SQLを呼び出す) $pdo = connect(); $st = $pdo->query("SELECT * FROM table WHERE day LIKE '%" . $_POST["day"] . "%' ); $word = $st->fetchAll(); ?> とします。 カラム「day」の中に「2」「12」「25」のデータが入っていたとします。 この場合、検索フォームで「2」と入力して検索すると 「2」「12」「25」全てのデータが抽出されます。 そうではなく、「2」のデータだけが抽出されるにはどうしたらよいでしょうか? 検索フォームを作る時は、上記のLIKEを使ったものしか知らないので、困っております。 何卒よろしくお願いします。

    • ベストアンサー
    • MySQL