有效的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>
可以用於清晰的意圖,但效率可能比直接比較略低。 DATETIME
< DATE_ADD('2011-11-11', INTERVAL 0 DAY)
此精製方法可確保在保留數據庫性能的同時進行準確的僅日期比較。 DATE(us_reg_date)
以上是如何在沒有時間元件的情況下有效率地比較 MySQL 中的日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!