2017-06-08 234 views
0

我需要一些幫助,在月末運行查詢。每個月的第一個工作日可能會有所不同,因此我可能只在某個特定月份的第三天工作。MySQL月度報告日期

我試圖找出我的WHERE語句看起來像到當月選擇的數據,除非是: 月1日,那麼它將需要選擇一切較前期 第1個工作日一個月,這可能是第三。它還需要選擇上個月的數據。

這些是我目前正在玩的兩種場景,還沒有數據來測試它。

我曾經想過做

WHERE 
MONTH(action_date) = MONTH(DATE_SUB(CURDATE(),INTERVAL 1 DAY)) 

不過這隨後也從2016年

返回的數據我也想過做

WHERE 
action_date = DATE_SUB(CURDATE(),INTERVAL 1 DAY) 

,但如果今天是這樣是行不通的說星期一的第三場。

我希望這會給我這樣做

+0

見:我爲什麼要爲了什麼,在我看來是一個非常簡單的SQL查詢提供MCVE?](https://meta.stackoverflow.com/問題/ 333952/WH y-should-i-provide-an-mcve-for-what-seems-to-the-a-very-simple-sql-query) – Strawberry

+0

我會有一個日曆表,它會有一個標誌表明當月的第一個工作日,並將這些報告驅除。如果您不允許這樣做(並且它可能位於單獨的模式中),那麼您還可以加入包含將來幾年的所有第一個工作日的子查詢)。 –

回答

0

你可以簡單地減去一個數天或從日期甚至一個月的最佳途徑的任何答案,因爲所有你實際上會從減法得到的是反正一個月

MONTH(DATE_SUB(CURDATE(),INTERVAL 5 DAY)) 

OR

MONTH(DATE_SUB(CURDATE(),INTERVAL 1 MONTH)) 
+0

減去說3天的問題意味着如果今天是週三的話。我將從上個月獲取數據,但如果今天是週三,我希望本月的數據。 所以我需要檢查日期名稱和日期。 –