2014-10-17 45 views
0

我正在使用下面給出的查詢來提取1周時間間隔的記錄。提取1周時間間隔的記錄,並在新周開始時啓動下一個計時器

mysql_query("SELECT t1.username, SUM(t2.points) AS total 
    FROM actcontest t2 JOIN user t1 ON t1.userid = t2.userid WHERE t2.date 
    BETWEEN (CURDATE() - INTERVAL 1 WEEK) AND CURDATE() GROUP BY t1.username ORDER BY 
    total DESC LIMIT 20"); 

一旦記錄被提取,我使用不同的查詢獎勵前3名用戶的獎金。

這工作正常。

問題: 一旦獎金頒發給上週的前3名成員,新的日期將從新周的開始日期開始,其中上週結束。

假設:我們開始在日期的計時器:DD/MM/YY]
周1 = {01-01-2010到07/01/2010}
周2 = {2010年7月1日至14/01/2010}
周3 = {14-01-2010到21/01/2010}
第4周= {21-01-2010到28/01/2010}

可以請你幫助我爲我的腳本構建這個邏輯。 我使用php和Mysql。

我想做的事:
一個我已經給第一週的獲獎者頒發獎金。我希望計時器只能在下週開始提取會員,它不應包含以前的日期。

我希望我澄清一下這個問題。

+0

我讀過你的問題5次,我還是不明白的問題,你想辦法增加一週或你想要什麼? – Naruto 2014-10-17 09:53:34

+0

@Naruto,更新了問題。 – 2014-10-17 09:59:56

+0

@Naruto,你想對這個問題發表評論,我只需要構建邏輯 – 2014-10-17 10:33:18

回答

0

考慮這樣的事情:

SET @weekNo := 4; 
SET @dateStart := '2014-01-01'; 

SELECT ADDDATE(CONCAT(@dateStart, ' 00:00:00'), INTERVAL 7*(@weekNo-1) DAY), 
    ADDDATE(CONCAT(@dateStart, ' 23:59:59'), INTERVAL 7*@weekNo-1 DAY); 

您可以檢查上面的腳本中的SQL。您可以更改頂部的2個變量:@weekNo是自開始日期起計算日期間隔所需的一週。而@dateStart是計時器開始的日期。

在您的PHP代碼中,您可以通過用php變量替換dateStart和weekNo來計算日期。

+0

我沒有得到你的想法,,,價值存儲在表中使用NOW(),這將是自動過程,每週都記錄將重置,新計時器將在每週開始......請您詳細說明您的想法 - – 2014-10-17 11:24:56

相關問題