如何在mysql查询

时间:2018-01-30 19:47:29

标签: mysql sql datetime

我参与MySQL查询,我需要选择上个月但不是最近30天的记录

例如,如果当前月份是1月,那么我需要将上个月的记录显示为12月,但是它应该再次显示2017年12月的记录,而不包括前几年。

我目前正在使用以下SQL部分。

$sql .= " AND MONTH(checkup_date) = MONTH(NOW() - INTERVAL 1 MONTH)";

它显示了数据库中所有成员的记录,即2017年12月,2016年12月等等。

我甚至尝试了以下

$sql .= " YEAR(checkup_date) AND MONTH(checkup_date) = MONTH(NOW() - INTERVAL 1 MONTH)";

但只有在上个月不早于1月才会起作用 即如果当前月份是2月份,那么它将起作用,因此上个月将是1月,而年份将是2018年

但在我的情况下,当前月份是1月,所以上个月将是12月,但这里的年份是2018年,所以它不会也不会显示任何记录。

所以大家请帮我解决这个问题,以便我可以获得去年的情况,以防当前月份为1月,而在另一个案例中,年份仍然是当年。

感谢您帮助解决问题。

3 个答案:

答案 0 :(得分:2)

您可以这样做:

Sonar way

如果不使用where checkup_date < curdate() - interval (1 - day(curdate())) day and checkup_date >= (curdate() - interval (1 - day(curdate())) day) - interval 1 month 上的函数,那么方法可以利用h作为该列的适当索引。

答案 1 :(得分:2)

这是在mysql中获取属于上个月的表中所有行的查询:

checkup_date

另一种选择是:

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

答案 2 :(得分:0)

获得上个月的

select DATE_ADD("2018-01-10", INTERVAL -1 MONTH)