人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

今、PHP+Postgresである処理を行っております。
現時刻から、お店の空いている時間帯を検索できるプログラムなのですが、PostgresSQL内に開店する時間が19:30分、閉店する時間が3:30で格納されております。

これでは、普通に比較しては、明日という判断が出来ないため、期待通りの結果になりません。
PHPの関数などで、処理をするのではなく、PostgresSQLのクエリで処理が終了できるようにお願いいたします。
※ただ、もちろん、クエリに値を渡す、事前準備でPHP関数を使うのは、問題ございません。

●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP クエリ プログラム 普通に 検索
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● westfish
●19ポイント

閉店する時間と開店する時間の大小関係で場合分けしてはどうでしょう?

{「開店する時間 < 閉店する時間」 かつ 「開店する時間 < 現時刻」 かつ 「現時刻 < 閉店する時間」} または {「開店する時間 > 閉店する時間」 かつ 「開店する時間 > 現時刻」 かつ 「現時刻 > 閉店する時間」}

です。URLはダミーです。

http://www.yahoo.com/

◎質問者からの返答

やってみたのですが、期待通りの結果にはなりませんでした。

ちなみに、下記のクエリです。

open_timeは開店、close_timeは閉店、$timeは現時刻となります。

select * from table_name where ( (open_time < close_time) and (open_time < '$time') and ('$time' < close_time) ) or ( (open_time > close_time) and (open_time > '$time') and ('$time' > close_time


2 ● table
●19ポイント

現時刻が19:30以上か、3:30以下かで条件を分けて、

比較するのは以下かででょうか?


日にちは関係なく、時間だけを比較してはいけないのですか?


明日という判断をどういう時にするのか分かりませんが、

的外れな答えだったらすいません。


ダミー

http://www.google.co.jp/


3 ● ekusutasii
●18ポイント

あなたの脳はちょっと一般人の脳とは構造が違うかの錯覚におちいります。http://www.sabakugalu.co.jp/


4 ● falcosapiens
●18ポイント

データ型を無視して(または変換して)良いのであれば,

閉店時間が開店時間より早い場合には

閉店時間に24時間プラスし,

その上で比較するという処理が一番簡単かと思います。

PHPは型にそれほどうるさくないですから。

http://ww7.tiki.ne.jp/~inabah/php/002_005.htm


5 ● westfish
●18ポイント

>やってみたのですが、期待通りの結果にはなりませんでした。

理論的にはうまく行くかと思ったのですが…具体的にはどういう結果になりましたか?$timeの型がopen_timeやclose_timeと直接比較するのに適した形になっていないとかではないですか?

URLはダミーです。http://www.yahoo.com

◎質問者からの返答

結果としては、例えば、現在が1時30分だとしますと、19:00?1:00の間を拾ってきてしまいます。

なおかつ、19:00?4:00の様なデータは拾ってきてくれません。

何が悪いと考えられますでしょうか。。。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ