我正在尝试显示过去一个月发送的邮件。如果今天的日期为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
有什么建议吗?
答案 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