一尘不染

从mysql的前一周选择记录

mysql

我的数据具有日期(Ymd H:i:s)列(类型为datetime)。我想选择输入日期之前1周内的所有记录(在下面的示例中:2011-09-17
00:00:00,但是遇到了一些麻烦。这是我得到的:

SELECT * FROM emails WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), 1 week))

我究竟做错了什么?谢谢


阅读 299

收藏
2020-05-17

共1个答案

一尘不染

我想你错过INTERVAL在前面1 week

SELECT *
FROM emails
WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL 1 week));

这是我运行的查询,适用于该DATE_SUB()零件:

SELECT *
FROM wp_posts
WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL 4 WEEK);

您可以使用负值来执行“给定日期前N周”的查询,这样可以正常工作:

SELECT *
FROM wp_posts
WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL -1 WEEK);

要么:

SELECT *
FROM emails
WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL -1 week))
2020-05-17