- 締切済み
PHP+MySQL 時間の比較がしたい
PHPとMySQLでメルマガ送信システムをつくっています。 会員登録時にメルマガ配信希望時間を選択してもらい、DBにtime型でインサートしています。 [member]テーブル mail fromtime totime --------------------------------------- aaa@aa.co.jp 10:00:00 18:00:00 bbb@bb.ne.jp 01:00:00 12:00:00 ccc@cc.ne.jp 22:00:00 06:00:00 管理者がメルマガを送信の際、配信時間内に該当する会員だけにメールを送信させたいのですが、配信時間に該当する会員の抽出が上手くいきません。 SQL文での抽出: SELECT * FROM `member` WHERE (`fromtime` <= `$sendtime`) AND (`$sendtime` <= `totime`); ($sendtimeはdate関数で取得した送信時間が入っています) PHPでの処理:fromtime,totime,$sendtimeに今日の日付を追加して、タイムスタンプに変換して比較演算子を使うことを検討しましたが、日をまたぐこともあるので、そこで行き詰ってしまいました。 SQLでもPHPでもいいので、正確に配信時間内に該当する会員データを抽出できる方法はありませんでしょうか? どうかご教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- seimurakam
- ベストアンサー率61% (21/34)
会員情報の時刻が、fromtime >= totimeの時に totimeを48時間表記にするVIEWを作ると すっきりすると思います。 ビューを噛まさずにSQL一本で記述するなら $sendtime between fromtime and if(fromtime<totime,totime,addtime(totime,"24:00:00")) でいかがでしょう?
- gau_puzzler
- ベストアンサー率48% (39/81)
単純に条件を2個書けばいいだけです 例だけ示すので、sql書いてください fromtime < totime && fromtime <= $time && $time <= totime || fromtime > totime && fromtime >= $time && $time >= totime