2017-07-04 61 views
0

獲取行我想這個查詢從上月

SELECT * 
FROM flexible_products 
WHERE YEAR(updated_at) = YEAR(DATE_SUB(CURDATE(), INTERVAL -1 MONTH)) 
AND MONTH(updated_at) = MONTH(DATE_SUB(CURDATE(), INTERVAL -1 MONTH)) 

對我目前的工作。我想要做的是獲得前一個月的所有行,例如

例如,我們今天有2017年7月4日,我想從1月到6月獲得行,這不是上述結果查詢。

這是在MySQL中的最佳方式是什麼?

+0

記錄應該始終在1月和當前1個月之間? –

+0

update_at是列名? – Ravindra

+0

我應該滿足前一個月的想法 – Fil

回答

2

以下查詢將返回當年1月1日當天或之後更新的所有記錄,但在當前月份的第一個月之前定格。

SELECT * 
FROM flexible_products 
WHERE updated_at >= DATE_FORMAT(NOW(), '%Y') AND 
     updated_at < DATE_FORMAT(NOW() ,'%Y-%m-01') 

按照下面的運行演示的鏈接:

Rextester

-1

如果我理解正確的話,你可以做到這一點

WHERE updated_at <= '2017-07-01' AND updated_at >= '2017-01-01' 
+0

我沒有降低您的評分,因爲您的查詢在此時刻是正確的。但是,8月1日即將問世,你的查詢將會失敗。 –

+0

是的,我知道我剛給他的結構。太糟糕了別人downvote我.. – Rad

0

你也應該試試這個,或者你可以得到任何兩個日期之間的數據。

SELECT * FROM flexible_products WHERE的updated_at BETWEEN DATE_ADD(DATE_FORMAT(NOW(), '%Y-%M-01'),INTERVAL -3月),NOW()

日期輸出是: -
DATE_ADD(DATE_FORMAT(NOW(),'%​​Y-%m-01'),INTERVAL -3 MONTH)// 2017-04-01
NOW()// 2017-07-04 11:17:38

0

有點短。不知道是否也更快

SELECT * 
FROM flexible_products 
WHERE 
    YEAR(updated_at) = YEAR(CURRENT_DATE) AND 
    MONTH(updated_at) < MONTH(CURRENT_DATE())