- 締切済み
データの取得に関して
データを取得する際、表示開始日の午前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() }
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- satoh
- ベストアンサー率77% (17/22)
sqlのgetdate()がGMTになっている! くらいしか思いつきません…。 PHPの文法的には、やっていることは正しいように思えます。 あとは、SQLの部分でしょうけど、これだけではわかりません。 もう少し、詳しく環境や動作をかかれてみてはいかがでしょうか。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
ちなみに、この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 )
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
<?php $time=date("H"); if($time == 10) { select * from test where start<=getdate() } ?> Elseで何か処理して取得しているせいではないのですか? <? $test = 09; if($test > 9) { print("a"); } else { print("b"); } ?>
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>月と日を指定せず、時間のみの指定でできるようにしたい では、表示開始日とは何を意味しているのでしょうか?
補足
DBの表示開始日を見てその表示開始日の10時以降の データを表示するようにしたいのですが。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
$date = date("m/d H"); if($date >= "11/01 10"){ #表示開始日を過ぎている } else { #表示開始日は、まだ過ぎていない } ってかんじでどうでしょう
補足
ありがとうございます。 上記の場合だと、11月1日に限られてしまうと思うのですが、データ的には毎週増えていくような感じです。 ですので、月と日を指定せず、時間のみの指定でできるようにしたいのですが、いい方法があるでしょうか。
補足
例えば、表示開始日が11月1日のデータがあるとすると、11月1日の10時以前は、10月31日までのデータを表示したくて、11月1日の10時を過ぎた段階で、表示開始日が11月1日までのデータを取得したいです。