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)
添加回答
举报