在mysql中选择一周前的记录

在mysql中选择一周前的记录,mysql,datetime,date,time,Mysql,Datetime,Date,Time,我的数据有一个日期(Y-m-dh:I:s)列(类型是datetime)。我想选择我输入日期前一周的所有记录(在下面的示例中:2011-09-17 00:00:00,但我遇到了一些问题。以下是我得到的: SELECT * FROM emails WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), 1 week)) 我做错了什么?谢谢我想你错过了1周前的INTERVAL: SELECT * FROM emails WHERE (DAT

我的数据有一个日期(Y-m-dh:I:s)列(类型是datetime)。我想选择我输入日期前一周的所有记录(在下面的示例中:2011-09-17 00:00:00,但我遇到了一些问题。以下是我得到的:

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

我做错了什么?谢谢

我想你错过了
1周前的
INTERVAL

SELECT *
FROM emails
WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL 1 week));
下面是我运行的一个查询,它确实适用于
DATE\u 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);
或:


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

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

谢谢。我使用了您输入的第一个代码(我需要在“1周”之前添加“内部”。谢谢…我可以通过以下查询获取超过2周的帖子…从
mypost
WHERE(DATE(post\u DATE)post_date
ASC这对我来说很有效,但我必须用NOW()替换datetime值,以便从执行查询的当前日期起1周内获取数据
SELECT * FROM emails WHERE date >= DATE_ADD('2011-09-17 00:00:00', INTERVAL -1 WEEK)
SELECT * FROM wp_posts
WHERE post_modified  
BETWEEN SYSDATE() - INTERVAL 7 DAY
AND SYSDATE();