选择mysql中前一周的记录

时间:2011-09-12 17:38:35

标签: mysql datetime date time

我的数据有一个日期(Y-m-d H:i:s)列(类型是日期时间)。我想在我输入日期前一周选择所有记录(在下面的例子中:2011-09-17 00:00:00,但我遇到了一些麻烦。这就是我所拥有的:

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

我做错了什么?感谢

3 个答案:

答案 0 :(得分:23)

我认为你在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))

答案 1 :(得分:3)

试试这个,我喜欢坚持使用DATE_ADD,只使用负值。

SELECT * FROM emails WHERE date >= DATE_ADD('2011-09-17 00:00:00', INTERVAL -1 WEEK)

答案 2 :(得分:3)

SELECT * FROM wp_posts
WHERE post_modified  
BETWEEN SYSDATE() - INTERVAL 7 DAY
AND SYSDATE();