如何选择上个月的第一周

时间:2015-11-20 19:19:30

标签: mysql

如何选择上一个月的第一周我尝试过

$myQuery = "SELECT repairId , startDate,catId,statusId FROM repair 
  WHERE supermarketId = '$supermarket' 
  AND startDate>=(CURDATE()- 1 WEEK - INTERVAL 2 week)";

这用于尝试选择第三周,但这不起作用

2 个答案:

答案 0 :(得分:0)

这适合你吗?

$myQuery = "SELECT repairId , startDate,catId,statusId FROM repair 
  WHERE supermarketId = '$supermarket' 
  AND startDate>= curdate() - interval 1 month
   - interval weekday(curdate() - interval 1 month) day 
   - interval (day(curdate() - interval 1 month 
   - interval weekday(curdate() - interval 1 month) day) div 7) week 
  AND startDate < curdate() - interval 1 month
   - interval weekday(curdate() - interval 1 month) day 
   - interval (day(curdate() - interval 1 month 
   - interval weekday(curdate() - interval 1 month) day) div 7) week _+ interval 1 week";

这里的想法是我们先回去一个月,然后找到一周的开始(假设星期一,星期日我们需要一些额外的调整),然后弄清楚从一开始就有多少整周。这个月,从目前为止的几个星期减去。这将我们带回到本月第一周的开始。对于范围的结束,我们只需在开始时添加一周。

答案 1 :(得分:0)

啊,你的问题变得更加详细。

对sql不是很熟悉,可能会有更好的东西,但是:

SELECT repairId , startDate,catId, statusId FROM repair
WHERE EXTRACT(YEAR_MONTH FROM start_date) = EXTRACT(YEAR_MONTH FROM NOW()) - 1 AND CAST(EXTRACT(DAY FROM start_date) / 7 + 1 as INT) = ?;

基本上,提取年份月份组件以比较年份和月份,然后提取月份使用由整数截断引起的地板的日期,以获得与您正在寻找的任何一周进行比较的一周

mysql return rows matching year month