効率的なmysql日付比較:時間コンポーネントを無視する
頻繁に、データベースクエリには、時間コンポーネントを考慮せずに日付を比較する必要があります。 MySQLは、これを効率的に達成するためにいくつかの機能を提供します
シナリオ:
の列をplayers
にus_reg_date
にDATETIME
にある
非効率的なアプローチ(およびそれが失敗する理由):
最初の試みには、CONVERT
を使用して日付部分を抽出することが含まれる場合があります。
<code class="language-sql">SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10';</code>
関数はデータ型を変更し、効率的なインデックス使用量を妨げます。 さらに、日付の直接文字列比較は、予期しない結果につながる可能性があります。
CONVERT
より効率的で正確な方法は、mysqlの組み込み日機能を活用します:
このクエリは
値を直接比較します。 重要な部分は<code class="language-sql">SELECT * FROM players WHERE us_reg_date >= '2000-07-05' AND us_reg_date < DATE_ADD('2011-11-11', INTERVAL 0 DAY);</code>
この洗練された方法により、データベースのパフォーマンスを維持しながら、正確な日付のみの比較が保証されます。
以上が時間コンポーネントを使用せずに MySQL で日付を効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。