• 締切済み

データの取得に関して

データを取得する際、表示開始日の午前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
  • 回答数5
  • ありがとう数11

みんなの回答

  • satoh
  • ベストアンサー率77% (17/22)
回答No.5

sqlのgetdate()がGMTになっている! くらいしか思いつきません…。 PHPの文法的には、やっていることは正しいように思えます。 あとは、SQLの部分でしょうけど、これだけではわかりません。 もう少し、詳しく環境や動作をかかれてみてはいかがでしょうか。

回答No.4

ちなみに、このSQLは簡略化したのかどうかわかりませんが、 getdate()では以下のように出力されますので、 上記SQLを真とした場合にはSQLエラーですね。 getdate() Array ( [seconds] => 45 [minutes] => 18 [hours] => 10 [mday] => 4 [wday] => 5 [mon] => 11 [year] => 2005 [yday] => 307 [weekday] => Friday [month] => November [0] => 1131067125 )

回答No.3

<?php $time=date("H"); if($time == 10) { select * from test where start<=getdate() } ?> Elseで何か処理して取得しているせいではないのですか? <? $test = 09; if($test > 9) { print("a"); } else { print("b"); } ?>

phptest
質問者

補足

例えば、表示開始日が11月1日のデータがあるとすると、11月1日の10時以前は、10月31日までのデータを表示したくて、11月1日の10時を過ぎた段階で、表示開始日が11月1日までのデータを取得したいです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>月と日を指定せず、時間のみの指定でできるようにしたい では、表示開始日とは何を意味しているのでしょうか?

phptest
質問者

補足

DBの表示開始日を見てその表示開始日の10時以降の データを表示するようにしたいのですが。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

$date = date("m/d H"); if($date >= "11/01 10"){ #表示開始日を過ぎている } else { #表示開始日は、まだ過ぎていない } ってかんじでどうでしょう

phptest
質問者

補足

ありがとうございます。 上記の場合だと、11月1日に限られてしまうと思うのですが、データ的には毎週増えていくような感じです。 ですので、月と日を指定せず、時間のみの指定でできるようにしたいのですが、いい方法があるでしょうか。

関連するQ&A

  • access97に2001年のデータ検索

    アクセス初心者のyaschiです。 よろしくお願いいたします。 テーブル入力されているデータを日付を条件に 取得しようと思い、以下のようなSELECT文を作りました。 SELECT * FROM AAA WHERE 年月日=#99/03/17#; このSELECT文の場合、きちんとデータを取得できるのですが、 2001年1月10日のデータを取得しようとしてWHERE句を 以下のように変えたところできませんでした。 WHERE 年月日=#01/01/10#; 2000年の問題かと思い2000年11月20日のデータを取得しようと WHERE句を以下のように変えたら今度は取得できました。 WHERE 年月日=#00/11/20#; なぜ、2001年のデータだけ取得できないのでしょうか?

  • 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

  • 開始日と終了日が設定されているデータの扱いについて

    開始日と終了日が設定されているデータの扱いについて教えてください。 すでに複数登録されているデータには、開始日と終了日というフィールドが登録されています。  → "開始日","終了日","箱1","箱2" → "051101","051130","a1","a2" → "051201","051231","b1","b2" 新しいデータを追加する際、すでに登録された期間に被っていた場合はエラー表示させたいのですが、そのやり方がわかりません。 (※12月1日~12月31日までというデータがすでに登録されていた場合、  11月1日~12月15日というデータは登録できない、という感じです) とりあえず下記のようにやったりしているのですが、 どうも思ったように動いてくれません また、SELECTを使うものなのか疑問に思っています。 $start_date = "2005-12-01" $end_date = "2005-12-31" $hoge = "SELECT * FROM table_name WHERE ( date_start<='"$start_data"' AND date_end>='"$start_data"' ) OR ( date_start<='"$end_data"' AND date_end>='"$end_data"')"; $db_query = sql_query($hoge,$ID); $array_result = mysql_fetch_array($db_query); if(empty($date_start_check) != TRUE ){ die("この期間内のデータはすでに登録されています。"); } 何卒、良いやり方を教えてくださいm(_ _)mペコリ

    • ベストアンサー
    • MySQL
  • 24時間以内に更新されたデータを取得

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

    • ベストアンサー
    • MySQL
  • VBA 抽出条件でデータ型が一致しません

    Access 2003について教えて下さい。環境はWin XPです。 Table1 ID(メモ型),日付(日付/時刻型 書式 日付(S)) 001,2012/08/10 002,2012/08/10 Form1 フォームにはテキストボックス、 txt_Dateがあります。 書式は日付(S)です。 ここには、yyyy/mm/ddの形式で値を打ち込む、またはカレンダーから選択します。 同じくボタン、btn_exeがあります。 これをクリックすると処理がはじまります。 Dim getDate As Date Dim strSQL As String Dim objADOCON As ADODB.Connection Dim objADORS As ADODB.Recordset getDate = txt_Date.Value strSQL = "select * from Table1 where 日付 = '" & getDate & "'" objADORS.Open strSQL, objADOCON, adOpenKeyset, adLockOptimistic 質問1. where 日付 = '" & getDate & "'" でやると下記のメッセージが表示されます。 抽出条件でデータ型が一致しません where 日付 = " & getDate でやると、エラーメッセージは起こりません。 何故このようなメッセージが表示されるのでしょうか? 質問2. Table1には2012/08/10というデータが日付フィールドに存在します。 where 日付 = " & getDate ではエラーメッセージが出ないので、 次のレコードセット取得時、レコード取得件数が0件です。 条件文が上手くいっていないような気がします。なぜでしょうか? ちなみに、 strSQL = "select * from Table1 では問題なくレコードセットを取得できています。 宜しくお願いします。

  • ROW_NUMBER()を使用したデータ取得

    ROW_NUMBER()を使用してORDERした結果の5行目から10行目を 取得したい場合、どこのサイトを参照しても下記(1)のように NOで並び替えたデータをインラインビューとして WHERE RNUM BETWEEN 5 AND 10 と条件を絞っていますが、(2)のように直接条件を指定した場合と どのような違いがあるのか教えてください。 (1) SELECT NO, NAME FROM ( SELECT NO, NAME, ROW_NUMBER() OVER (ORDER BY NO) RNUM FROM ROWNUM_TEST ) WHERE RNUM BETWEEN 5 AND 10 (2) SELECT NO, NAME,ROW_NUMBER() OVER (ORDER BY NO) RNUM FROM ROWNUM_TEST WHERE RNUM BETWEEN 5 AND 10

  • 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
  • sqlのwhereで指定した条件の前後を取得したい

    テーブル=T) KEY DATA 001 あ 002 い 003 う 004 え 005 お SQL) SELECT DATA FROM T WHERE KEY = 003 ; 上記のSQLでは、「う」のデータしか取得できませんが、 「003」の前後1件、合計3件の「い」「う」「え」を取得する方法を教えて下さい。 ちなみに、 SELECT DATA FROM T WHERE KEY >= 003 AND ROWNUM <= 2 と SELECT * FROM ( SELECT DATA FROM T WHERE KEY < 003 ORDER BY KEY DESC ) WHERE ROWNUM < 1 のUNIONでは上手く行きませんでした。 よろしくお願いします。

  • 異なるテーブルから一括でデータを取得したい

    異なるテーブルから一括でデータを取得したいと思っています。 現在思いつくのはunionによる結合なのですが、いささかぶさいくではないか?と思ってます。 select a,b,c from x1,y,z where A union select a,b,c from x2,y,z where A ・・・ 上記のように、x1,x2が一定の数字でいくつも対象となります。 fromにはワイルドカードが使えないので、どのようにしたものかと悩んでおります。 ※selectで取得するカラム名は全テーブル同一で、検索条件も同一です。 unionがあるべき姿なのでしょうか?

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

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

専門家に質問してみよう