2015-11-20 46 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

相關問題