• ベストアンサー

24時間以内に更新されたデータを取得

MySQL3で24時間に更新されたデータを取得したいのですが、いまいち方法が分かりません。 select * from test WHERE to_days(now()-60*60*24) > UpdataDate このような形では無理なようなのですが、いい方法はあるでしょうか? UpdataDateはdatetime型です。 よろしくお願いします。

  • MySQL
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

こんなんじゃないですか? SELECT * FROM `test` WHERE `UpdataDate`>=sysdate() - interval 1 day

参考URL:
http://www.mysql.gr.jp/Manual/mysql-3.23.49/manual.ja_Reference.html#Date_and_time_functions
phptest
質問者

補足

ご回答ありがとうございます。 参考にさせていただきます。 先程自分でもいろいろ考えていて、以下のようなSQL文に辿りついたのですが、とりあえず24時間以上、以内で試すと問題なさそうだったのですが、いかがでしょうか? select * from test WHERE DATE_ADD (UpdataDate,INTERVAL 24 HOUR) > NOW()";

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

参考サイトにもかいてあるとおり NOW()とSYSDATE()とCURRENT_TIMESTAMP は 同意です。 SQLの場合SYSDATEはORACLEっぽい書き方ですが やや文法は違うみたいですね。 またDATE_ADD()はADDDATE()、DATE_SUB()は SUBDATE()と同意で、INTERVALを直接足し引き するのも同じ意味なので、お好きな書式で 書かれると良いと思います

関連するQ&A

  • postgreSQLで更新後のデータを取得したい。

    postgreSQLで更新後のデータを取得したい。 初めて質問させていただきます。 postgreSQLでupdateした後、更新後のデータをselectで取得したいのですが、 トランザクションが完了するまでにselect文が発行されているみたいで、更新前のデータを取得してしまいます。 それぞれ、違うファイルから投げられているので、同じトランザクションにすることはできません。 何かいい方法があればご教授お願いします。 a.phpで下記のSQLを発行 update test_tbl set test1 = 'aaa' where test2 = 'bbb' a.phpが走っている間に、下記のb.phpが実行される。 select test1 from test_tbl 環境 php5 postgres8.1

  • datetime型で日付計算ができません。

    開始日時(start_date)の20日を経過したレコードを削除したいのですがSQLで行う方法がわかりません。 start_dateはMySQLのdatetime型です。 select * from test where start_date + 20days < now() な感じ消せると思ったのですが調べても方法が 見つかりませんでした。

    • ベストアンサー
    • MySQL
  • データの取得に関して

    データを取得する際、表示開始日の午前10時になったらデータを取得するような形にしたのですが、 下記のようにすると、その日になると同時に取得してしまいます。(10時より前に) 例えば、表示開始日が11月1日だった場合、 11月1日の10時になったら表示するようにしたいのですが、どういう感じにすればいいでしょうか。 <?php $time=date("H"); if($time>9) { select * from test where start<=getdate() } else { select * from test where start<getdate() }

    • 締切済み
    • PHP
  • 保存時間から10日後の判定

    保存時間からちょうど10日後の時間経過処理に行き詰まってしまったのでお力を貸していただけないでしょうか。 NOW()にて 現在時間をテーブル(time)へ保存したとします。 例:2004-10-22 15:52:31 この時間を $sql = "SELECT * FROM test WHERE (to_days(NOW()) - to_days(time))='10'"; とすることで10日後の経過の取得は出来たのですが、 例の場合ですと 2004-10-22 15:52:31 ↓10日後の同時刻 2004-11-01 15:52:31 を経過した時点の処理方法がわかりません。 ご協力よろしくお願い致します

    • ベストアンサー
    • MySQL
  • PDOのデータ取得方法について

    お世話になります。 以前まで「mysql_query」でSQLを実行していたのをPDOで行うように変更しております。 prepareの「?」の部分までのSQLにした場合(1)、データ取得出来ますが (2)ですとエラーも返ってこなくデータ取得出来ません。 色々と試してはいますが、全く出来なくて大変困っています。どうかご教示くださいませ。 1)SELECT * FROM table WHERE data_code = ? and data_code2 = ? 2)SELECT * FROM table WHERE data_code = ? and data_code2 = ? and (data_code3 = "null" or data_code3 is null or data_code3 = "") ※PHP5.3、MySQL5.0です。

    • 締切済み
    • PHP
  • 4つのテーブルから、該当する項目を一度に検索したい。重複除く

    4つのテーブルから、それぞれ違う条件で検索し、該当する項目名NO を探したいのですが、どのようなselect文を書くと効率よく検索できる のでしょうか?また、重複NOは除きたいのです。 良かったら教えて下さい。 例えば、テーブル名:test1,test2,test3,test4とあった場合、 一度に該当するNOを拾い出す方法があれば、教えて下さい。 1.select no from test1 where code = '' and day < 20041118; 2.select no from test2 where day < 20041118; 3.2.select no from test3 where data != '' and day < 20041118; 4.select no from test4 where day > 20041018 and day < 20041118;

  • 日付の期間内のデータ取得方法は?

    お世話になります。 Microsoft SQL server で、日付の期間内のデータを取得するにはどのような形にすれば良いのでしょうか? たとえば SELECT a FROM data WHERE ... and ... よろしくお願いいたします。

  • MYSQL バイナリーデータに変換して取得

    MYSQLでSELECTして以下のテーブルのCODEカラムからバイナリーデータに変換してデータを取得したいのですが、どうしたら良いでしょうか? SELECT CODE FROM TABLE_NEME WHERE ID='XXX' <テーブルデータ> CODE(varchar型) 011A00046D0ADC4B

    • ベストアンサー
    • MySQL
  • EXCEL VBAでADOを使ってEXCELファイルよりデータを取得し

    EXCEL VBAでADOを使ってEXCELファイルよりデータを取得しています。 その際のSQL実行結果が上手くいきません。 'Excel のバージョン 2003 SP3 'データ項目名 'ID,名前,,,,,,,,,,,長文1,長文2,,,,削除フラグ,削除日時,更新日時 ←こんな感じで20項目 上記の「削除フラグ」の値を抽出条件にしています。 文字列の項目で、''、' '、'1'などの値があります。 '1'が入っているデータは削除された古いデータなので、抽出対象外にしたいです。 mySql = "select * FROM Sample1 WHERE (名前 LIKE '%山%') AND (削除フラグ <> '1')" Set adoRS = adoCON.Execute(mySql) Debug.Print mySql 上記を実行すると、対象データはあるのに取得できません。 実行時エラーになることはなく、処理は正常に終了します。 mySql = "select * FROM Sample1 WHERE (名前 LIKE '%山%') AND (削除フラグ = '1')" だと、「削除フラグ」に'1'が入っているデータが取得できます。 mySql = "select * FROM Sample1 WHERE (名前 LIKE '%山%') AND (削除フラグ != '1')" これを試しましたが、構文エラー:演算子がありません となります。 SQL文が悪いのか、「削除フラグ」のデータが悪いのかわかりません。 解決していただけなしでしょうか?

  • テーブルの「実行時間」のカラムから一時間以内のデータだけ取り出したい

    いつもお世話になっております。 今、一時間ごとに表示する文章を変えるプログラム(表示はindex.html)を作っているのですが、データベース(MySQL)からのデータの引っ張り方が分かりません。 実行時間をDATETIMEで定義しており、一番新しいデータだけを引っ張ってきて表示するということは出来ているのですが。 SELECT msg FROM mytable ORDER BY time desc LIMIT 1; としてあります。これはmy.cgiに記載してあります。 これをいじって、一時間以内にテーブルに登録されたデータをひっぱることってできますでしょうか? 宜しくお願いいたします。