MySQL查询问题。上个月的日期

时间:2011-08-02 16:39:57

标签: mysql datetime

我的数据库中有一个dateBill字段-DATETIME-。 我想从最后一个月检索所有信息。

所以,今天是:2011-08-02 12:00:00

我的查询是:

SELECT *
FROM bills
WHERE DATE(dateBill) > DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AND status = 1
ORDER BY id_bill

状态只是表明该法案是否获得批准。

但是我得到了一些结果:

 2011-09-01 21:44:07
 2012-08-01 00:00:00

我插入这些值只是为了测试。如您所见,它无法正常工作。

请帮忙吗?

2 个答案:

答案 0 :(得分:1)

DATE(dateBill)> DATE_SUB(CURDATE(),INTERVAL 1个月) 也记录了未来的日期。

包括下个月

2011-09-01 21:44:07

和明年

2012-08-01 00:00:00

如果您不喜欢,请添加AND CURDATE()< = DATE(dateBill)...

答案 1 :(得分:0)

SELECT *
FROM bills
WHERE 
  YEAR(dateBill) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND
  MONTH(dateBill) = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND 
  status = 1
ORDER BY id_bill