查询以获取上个月的所有行

我需要选择数据库中上个月创建的所有行。

例如,如果当前月份是一月,那么我想返回在十二月创建的所有行,如果月份是二月,那么我想返回在一月份创建的所有行。date_created我的数据库中有一列,其中列出了以此格式创建的日期:2007-06-05 14:50:17


慕标琳琳
浏览 440回答 3
3回答

隔江千里

SELECT * FROM tableWHERE YEAR(date_created) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)AND MONTH(date_created) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)

胡说叔叔

这是另一种选择。假设您有一个索引字段DATE或DATETIME类型字段,则应使用索引,因为格式化格式的日期将在使用索引之前进行类型转换。使用EXPLAIN查看时,您应该看到的是range查询而不是index查询。SELECT&nbsp; &nbsp; *&nbsp;FROM&nbsp; &nbsp; tableWHERE&nbsp;&nbsp; &nbsp; date_created >= DATE_FORMAT( CURRENT_DATE - INTERVAL 1 MONTH, '%Y/%m/01' )&nbsp;AND&nbsp; &nbsp; date_created < DATE_FORMAT( CURRENT_DATE, '%Y/%m/01' )

森林海

替代hobodave的答案SELECT * FROM tableWHERE 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 tableWHERE EXTRACT(YEAR_MONTH FROM date_created) = EXTRACT(YEAR_MONTH FROM CURDATE() - INTERVAL1 MONTH)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL