选择mysql中前一周的记录

And*_*sen 7 mysql time datetime date

我的数据有一个日期(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))
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢

Cym*_*men 23

我想你INTERVAL在前面缺席了1 week:

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

这是我运行的一个对该DATE_SUB()部件有效的查询:

SELECT *
FROM wp_posts
WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL 4 WEEK);
Run Code Online (Sandbox Code Playgroud)

您可以使用负值来执行"给定日期前N周"查询,这样的事情可以起作用:

SELECT *
FROM wp_posts
WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL -1 WEEK);
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT *
FROM emails
WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL -1 week))
Run Code Online (Sandbox Code Playgroud)