2015-11-20 47 views
-1

如何选择前一个月的第一周我已经试过如何选择前一个月

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

这是用来尝试和选择的第三个星期,但是这没”的第一周将不起作用

+0

欢迎的网站!请花一些时间阅读[本网站的帮助部分](http://stackoverflow.com/help),特别是页面[“我可以问什么问题?”)(http://stackoverflow.com/help/讨论话题)和[“我应该避免问什么类型的问题?”](http://stackoverflow.com/help/dont-ask)。还请阅读[如何提出一个好问题](http://stackoverflow.com/help/how-to-ask)以及如何创建[最小,完整和可验证示例](http:// stackoverflow。 COM /帮助/ MCVE)。 –

+0

请更具体。 –

+0

您可以使用SELECT BETWEEN http://stackoverflow.com/questions/5125076/sql-query-to-select-dates-between-two-dates – Gamenotcore

回答

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"; 

这里的想法是,我们先回顾一个月,然后找到一周的开始(假设周一,周日我们需要一些额外的调整),然后找出从一开始就有多少整周并且从迄今为止的日期减去那几个星期。这使我们回到本月第一周的开始。对于范围的末尾,我们只需在开始时添加一周。

+0

感谢您使用以下方法设法解决的问题: – RM1664

+0

startDate> =(CURDATE() - INTERVAL 4 weeks)AND startDate <=(CURDATE() - INTERVAL 3 weeks)“; – RM1664

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

相关问题