2011-08-26 120 views
3

在MySQL 5.1 InnoDB環境中,根據日期間隔選擇數據的最佳方法是什麼?讓MySQL找出日期間隔與PHP

讓MySQL的通過像DATE_SUB(CURDATE(), INTERVAL 5 DAY) > created_at

做,或有PHP通過strtotime準備提交前的日期?

回答

3

我會通過查詢到MySql。這樣,你就可以保持從PHP中選擇日期的邏輯。 PHP只是處理顯示,而且你還可以從數據庫中獲得更小的數據塊。

1

在這種情況下,我認爲從性能的角度來看並不重要。你的表情(DATE_SUB)將被評估一次。另一點是你的web服務器和mysql服務器可以使用不同的時區,所以你可能會有不同的結果。

0

我會盡可能保持與數據庫最接近的邏輯 - 它有更多的能力做任何優化。此外,還可以更輕鬆地更改表格,將來可以更改PHP(也許是java/C#...)的使用。它還區分高炮數據庫(數據),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() 

我喜歡這種語法,因爲它是如此接近我的範圍的心理畫面。