2011-08-26 13 views
3

MySQL 5.1のInnoDB環境では、日付間隔に基づいてデータを選択する最良の方法は何ですか? MySQLはDATE_SUB(CURDATE(), INTERVAL 5 DAY) > created_atMySQLと日付の間隔をPHPと比較する

のようなものを経由して、それを行うか、PHPがstrtotimeを経由して提出する前に日付を準備していまかせ

答えて

3

私は、MySqlへのクエリを介して行います。そうすれば、PHPから日付を選択するロジックを維持できます。 PHPが表示を処理するだけで、データベースから出てくる小さなデータのチャンクが得られます。

1

この場合、パフォーマンスの観点からは重要ではないと思います。あなたの式(DATE_SUB)は一度だけ評価されます。もう一つのポイントは、WebサーバとMySQLサーバが異なるタイムゾーンを使用できることです。異なる結果が生じる可能性があります。

0

私はデータベースに最も近い論理を保つでしょう - それはどんな最適化を行う能力も持っています。また、テーブルを簡単に変更したり、将来のPHP(おそらくjava/C#...)の使用を変更する機能も提供します。また、(データ用)データベースbeteen差別、PHPは(HTMLの配信のため)、Javascriptが、CSS(ユーザーの楽しみのために)使用して日付範囲を選択することができます

0

(きれいなものを作るために)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() 

私は範囲の私の精神的な絵に近いので、私はこの構文が好きです。