3 回答

TA貢獻1906條經驗 獲得超10個贊
SELECT * FROM table
WHERE YEAR(date_created) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
AND MONTH(date_created) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)

TA貢獻1804條經驗 獲得超8個贊
這是另一種選擇。假設您有一個索引字段DATE或DATETIME類型字段,則應使用索引,因為格式化格式的日期將在使用索引之前進行類型轉換。使用EXPLAIN查看時,您應該看到的是range查詢而不是index查詢。
SELECT
*
FROM
table
WHERE
date_created >= DATE_FORMAT( CURRENT_DATE - INTERVAL 1 MONTH, '%Y/%m/01' )
AND
date_created < DATE_FORMAT( CURRENT_DATE, '%Y/%m/01' )

TA貢獻2011條經驗 獲得超2個贊
替代hobodave的答案
SELECT * FROM table
WHERE YEAR(date_created) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
AND MONTH(date_created) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
您可以使用YEAR_MONTH作為單位,使用EXTRACT達到相同的效果,因此不需要AND,如下所示:
SELECT * FROM table
WHERE EXTRACT(YEAR_MONTH FROM date_created) = EXTRACT(YEAR_MONTH FROM CURDATE() - INTERVAL
1 MONTH)
添加回答
舉報