提取1周时间间隔的记录,当新周开始时,他们开始下一个计时器

时间:2014-10-17 09:50:46

标签: php mysql sql

我使用下面给出的查询来提取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位用户奖励奖金。

这很好用。

问题: 一旦奖金被授予上周,前三名成员,新日期将从新周开始日期开始,即上周结束。

假设:我们在日期启动了计时器:[dd / mm / yy]
第1周= {01-01-2010至07/01/2010}
第2周= {07-01-2010至14/01/2010}
第3周= {14-01-2010至21/01/2010}
第4周= {21-01-2010至28/01/2010}

你能帮我为我的剧本构建这个逻辑吗? 我正在使用php和Mysql。

我想做什么:
我赢得了第一周的奖金。我希望计时器仅在下周开始提取成员,它不应包括之前的日期。

我希望我澄清了这个问题。

2 个答案:

答案 0 :(得分: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来计算日期。

答案 1 :(得分:0)

select field1,field2     
from table_name     
where date_sub( field_date , INTERVAL 7 day) <= now()

看到这个,你会得到提示:https://stackoverflow.com/questions/26358240/show-data-from-the-last-7-days/26358454#26358454