Query to get all rows from previous month
我需要选择数据库中上个月创建的所有行。
例如,如果当前月份是一月,那么我想返回在十二月创建的所有行,如果月份是二月,那么我想返回在一月份创建的所有行。 我的数据库中有一个
1 2 3 |
这是另一种选择。假设您有索引的
1 2 3 4 5 6 7 8 | 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' ) |
替代hobodave的答案
1 2 3 |
您可以使用YEAR_MONTH作为单位,使用EXTRACT达到相同的目的,因此不需要AND,如下所示:
1 2 3 |
如果没有将来的日期...
经过测试。
1 2 3 | SELECT * FROM yourtable where DATE_FORMAT(date_created, '%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 1 month),'%Y-%m') |
这应返回上一个日历月的所有记录,而不是最近30或31天的记录。
尽管已经选择了该问题的答案,但是我相信最简单的查询是
1 2 3 4 | SELECT * FROM table WHERE date_created BETWEEN (CURRENT_DATE() - INTERVAL 1 MONTH) AND CURRENT_DATE(); |
1 2 |
这对我有用(选择上个月创建的所有记录,而不管您本月运行查询的日期如何)
这是获取上个月记录的查询:
1 2 3 4 5 6 7 8 |
问候
-saqib
WHERE date_created LIKE concat(LEFT(DATE_SUB(NOW(), interval 1 month),7),'%');
如果您的date_created已建立索引,则此索引将能够利用索引,因为它不会对字段值应用任何转换函数。
1 2 3 |