MySQL从上个月获取具有日期时间类型的行

时间:2014-08-11 15:53:41

标签: php mysql date datetime mysqli

我正在尝试显示过去一个月发送的邮件。如果今天的日期为11/08/2014,那么我希望显示包含日期的消息:11/07/14 - 11/08/14

我的数据库上的日期字段具有此值2014-08-10 17:20:28(类型:日期时间)

我正在使用以下查询,但它不起作用,我认为问题是日期之后的时间?我删除了%h:%i:%s,但它仍无效。

SELECT * 
FROM messages 
WHERE ...... 
AND (date_sent BETWEEN DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01 %h:%i:%s') 
AND LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH)) 
ORDER BY date_sent DESC

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

可能是您使用的CURRENT_DATE值,请尝试使用NOW()

SELECT *
FROM messages
WHERE ...
AND date_sent <= NOW()
AND date_sent >= NOW() - INTERVAL 1 MONTH
ORDER BY date_sent DESC;

答案 1 :(得分:1)

由于您的date_sent已经是datetime,因此date_format()次呼叫根本不需要。 MySQL可以轻松地比较自己的日期格式:

SELECT *
FROM messages
WHERE date_sent >= NOW() - INTERVAL 1 MONTH