MySQL 5.1のInnoDB環境では、日付間隔に基づいてデータを選択する最良の方法は何ですか? MySQLはDATE_SUB(CURDATE(), INTERVAL 5 DAY) > created_at
MySQLと日付の間隔をPHPと比較する
のようなものを経由して、それを行うか、PHPがstrtotime
を経由して提出する前に日付を準備していまかせ
?
MySQL 5.1のInnoDB環境では、日付間隔に基づいてデータを選択する最良の方法は何ですか? MySQLはDATE_SUB(CURDATE(), INTERVAL 5 DAY) > created_at
MySQLと日付の間隔をPHPと比較する
のようなものを経由して、それを行うか、PHPがstrtotime
を経由して提出する前に日付を準備していまかせ
?
私は、MySqlへのクエリを介して行います。そうすれば、PHPから日付を選択するロジックを維持できます。 PHPが表示を処理するだけで、データベースから出てくる小さなデータのチャンクが得られます。
この場合、パフォーマンスの観点からは重要ではないと思います。あなたの式(DATE_SUB
)は一度だけ評価されます。もう一つのポイントは、WebサーバとMySQLサーバが異なるタイムゾーンを使用できることです。異なる結果が生じる可能性があります。
私はデータベースに最も近い論理を保つでしょう - それはどんな最適化を行う能力も持っています。また、テーブルを簡単に変更したり、将来のPHP(おそらくjava/C#...)の使用を変更する機能も提供します。また、(データ用)データベースbeteen差別、PHPは(HTMLの配信のため)、Javascriptが、CSS(ユーザーの楽しみのために)使用して日付範囲を選択することができます
(きれいなものを作るために)BETWEEN ... AND ...
SELECT * FROM table1 t1 WHERE now() BETWEEN t1.startdate AND t1.enddate
または
SELECT * FROM table1 t1
WHERE t1.somedate BETWEEN DATE_SUB(now(),INTERVAL 1 DAY) AND now()
私は範囲の私の精神的な絵に近いので、私はこの構文が好きです。