2013-05-10 62 views
0

我想选择上周内的所有日期。 但不是简单地计算当前的日期 - 7,因为我所遇到的所有帖子都建议。 这是我实际上有它现在的SUM ....上周选择日期,但不止最近7天

SELECT SUM(total) FROM payforms WHERE user_id = 1 GROUP BY WEEK(date) 

这给了我一个很好的总... 但我想在最近一周内检索所有的个人记录。 因此,我可以使用BETWEEN查询....但我怎么才能让它看起来在本周。 示例... 星期二我希望它只能从Sun,Mon,Tue找到值。 星期三,我希望它找到太阳,星期一,星期二,星期三。 星期六它发现整个前一周。 etc

所以要更清楚.... 我不希望它找到上周一,在星期一。 星期一它应该只显示星期一,如果你明白我的意思。

我可以这样做吗??

感谢

回答

1
select * from payforms where yearweek(date) = yearweek(now()); 

虽然我认为MySQL的周在周日开始

+0

它从星期一开始,从[平日](https://dev.mysql.com/doc/refman/5.5/en/date -and-time-functions.html#function_weekday)函数'返回日期的星期几索引(0 =星期一,1 =星期二,... 6 =星期日).' – 2013-05-10 21:41:47

0

您可以使用WEEKDAY日期函数,它返回一周中的一天指数。

0

如果我正确理解你的问题,你可以使用此查询:

SELECT date, SUM(total) 
FROM  payforms 
WHERE date >= CURDATE() - INTERVAL DAYOFWEEK(CURDATE())-1 DAY 
GROUP BY date 

请参阅小提琴here。 这将从上周日开始累计本周每天的所有总计。如果你想让它开始于上周一你可以使用这个:

WHERE date >= CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY