2017-02-02 37 views
0

我正在查詢上個日曆月的記錄。現在是2月份,它應該會返回今年1月份添加的所有記錄。MYSQL上個月查詢沒有返回前9天

我的查詢:

`SELECT * FROM table_name WHERE date >= 
DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 
DAY) AND date <= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 
MONTH)), INTERVAL 0 DAY) AND campaign = '$campaign' ORDER BY date 
ASC` 

它返回的一些記錄,但跳過第9天。它從上個月10日開始顯示記錄。我在這裏錯過了什麼?

+0

將您的表格與數據一起發佈 – amit

+0

嘗試將日期函數的結果保存爲字段並檢查它們的值或者在phpmyadmin中運行此查詢(更簡單) –

+0

@OfirBaruch,它返回同樣!任何事情需要在我的phpmyadmin做? –

回答

1

檢查您的日期字段類型並確保您沒有把它與varchar搞錯

+0

這是罪魁禍首。謝謝你,先生! –

0
SELECT * FROM table_name WHERE date between DATE_SUB(DATE_SUB(CURRENT_DATE,INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY),INTERVAL 1 MONTH) AND DATE_SUB(DATE_SUB(CURRENT_DATE,INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY),INTERVAL 1 DAY) AND campaign = '$campaign' ORDER BY date ASC 
+0

返回相同的 –

+0

刪除條件(campaign ='$ campaign'),然後檢查記錄是否是否返回 – Pavankant

+0

已經嘗試過這個兄弟! –

0

嘗試在一步步獲得更多數據,

首先,你應該試試下面的查詢。

SELECT Date, DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY) AS StartDate, DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)), INTERVAL 0 DAY) AS EndDate FROM MyTable 

二,如果第一步給出正確的日期,那麼通過直接寫入日期而不是DATE_ADD函數在where子句中獲取數據。

三,如果這些會給你寫數據,然後嘗試使用DATE_ADD函數獲取數據。

重播如果您將得到解決方案。

0

SELECT * FROM TABLE_NAME WHERE (MONTH(日期)=(MONTH(NOW()) - 1)和年份(日期)= YEAR(NOW())) OR (MONTH(日期)= 12 AND MONTH(NOW())= 1 AND YEAR(date)=(YEAR(NOW()) - 1)AND campaign ='$ campaign'ORDER BY date ASC`