2008-11-24 7 views
1

我目前使用下面的SQL檢索過去七天值得一表的條目:PHP/MySQL的:檢索最後*全*周條目

purchased >= date_sub(now() ,interval 7 day) 

不過,我需要改變這個所以它會檢索最後一週的價值(週六午夜到週六午夜)。所以基本上,整個一週的結果都不會改變,但是當週日早上有人訪問時,他們會刷新。

我只是無法弄清楚如何解決日子等問題。另外,是否有內置的MySQL函數用於執行此操作?

我希望我已經解釋清楚了。 這是一個PHP應用程序。

回答

2

查看MySQL函數YEARWEEK()

所以你可以做這樣的事情

SELECT * FROM table WHERE YEARWEEK(purchased) = YEARWEEK(NOW()); 

您可以通過使用第二模式參數更改星期開始的第一天

什麼可能是更好不過是以某種方式計算的最後日期星期天在00:00「,然後數據庫不必爲每行都運行一個函數,但是我看不到在MySQL中這樣做的明顯方式。在PHP中,你可以很容易但是產生這種做類似

$sunday = date(('Y-m-d H:i:s'), strtotime('last sunday 00:00')); 
$sql = "SELECT * FROM table WHERE purchased >= '$sunday'"; 
0

MySQL有一個WEEK()函數,它允許您從一個日期獲取一年中的數字星期。您可以獲得(今天的星期)-1,並將其與您過濾的記錄周進行比較。

+0

你需要檢查的一年,否則你可能會從同一個星期,但在一年前 – 2008-11-24 12:03:47

+0

好一點,我的失誤得到記錄。 – acrosman 2008-11-24 12:28:07