在MySQL 5.1 InnoDB環境中,根據日期間隔選擇數據的最佳方法是什麼?讓MySQL找出日期間隔與PHP
讓MySQL的通過像DATE_SUB(CURDATE(), INTERVAL 5 DAY) > created_at
做,或有PHP通過strtotime
準備提交前的日期?
在MySQL 5.1 InnoDB環境中,根據日期間隔選擇數據的最佳方法是什麼?讓MySQL找出日期間隔與PHP
讓MySQL的通過像DATE_SUB(CURDATE(), INTERVAL 5 DAY) > created_at
做,或有PHP通過strtotime
準備提交前的日期?
我會通過查詢到MySql。這樣,你就可以保持從PHP中選擇日期的邏輯。 PHP只是處理顯示,而且你還可以從數據庫中獲得更小的數據塊。
在這種情況下,我認爲從性能的角度來看並不重要。你的表情(DATE_SUB
)將被評估一次。另一點是你的web服務器和mysql服務器可以使用不同的時區,所以你可能會有不同的結果。
我會盡可能保持與數據庫最接近的邏輯 - 它有更多的能力做任何優化。此外,還可以更輕鬆地更改表格,將來可以更改PHP(也許是java/C#...)的使用。它還區分高炮數據庫(數據),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()
我喜歡這種語法,因爲它是如此接近我的範圍的心理畫面。