2015-01-04 64 views
0

我試圖從上週四上午12點到週三晚上12點從上週的上週開始查詢。如何查詢上週從週四到週三?

這需要始終運行並且是最新的。從週四到週三,本週還有另一個查詢,實際上它工作正常。我只需要在上週過去一週後顯示結果的另一個查詢。

我相信這個查詢是上週的,但不是在星期四開始到星期三結束。

SELECT collector, SUM('amountcollected') as 'totalsum' FROM commissioninfo 
    WHERE thedate >= Curdate() - INTERVAL Dayofweek(Curdate())+6 day 
    AND thedate < Curdate() - INTERVAL Dayofweek(Curdate())-1 day 
    GROUP BY collector ORDER BY totalsum DESC 
+0

你的意思是星期三晚上在午夜?中午12點是中午......你的意思是中午或週三晚上11:59分? 此外,日期存儲在您的SQL數據庫中的格式是什麼? – Mooseknuckles

+0

如果您喜歡,請考慮遵循以下簡單的兩步操作步驟:1.如果您尚未這樣做,請提供適當的DDL(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相符的所需結果集。 – Strawberry

回答

0

可能有更好的方法來使用MySQL自己的日期函數來做到這一點,但我想我可能會這樣做。我假設你的意思是星期三晚上下午11:59:59不過,不是中午:

$lastThursday = new DateTime("Thursday last week");

$wednesday = new DateTime("Wednesday");

$today = new DateTime("now");

$day = $today->format("l");

if ($day == "Sunday" || $day == "Monday" || $day == "Tuesday" || $day == "Wednesday") { 
    $lastThursday->modify("-1 week"); 
    $wednesday->modify("-1 week"); 
} 

$query = "SELECT collector, SUM('amountcollected') as 'totalsum' FROM commissioninfo WHERE thedate BETWEEN ".$lastThursday->format("Y-m-d")." AND ".$wednesday->format("Y-m-d ")." GROUP BY collector ORDER BY totalsum DESC";

+0

是的,週三晚上12點正確。我的日期格式如下:2014-12-31。我確實使用你在這裏的東西嗎?這會按照你的方式工作嗎? – user2593040

+0

不,我會編輯 – Mooseknuckles

+0

已編輯,現在就試試吧 – Mooseknuckles

相關問題