我使用下面给出的查询来提取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。
我想做什么:
我赢得了第一周的奖金。我希望计时器仅在下周开始提取成员,它不应包括之前的日期。
我希望我澄清了这个问题。
答案 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