MySQL 在mysql中选择前一周的记录
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7391718/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Select records from one week previous in mysql
提问by Andrew Samuelsen
I have data that has a date (Y-m-d H:i:s) column (the type is datetime). I'd like to select all records from 1 week before a date I enter (in the below example: 2011-09-17 00:00:00, but am having some trouble. Here's what I've got:
我有一个日期 (Ymd H:i:s) 列的数据(类型是日期时间)。我想选择输入日期前 1 周的所有记录(在下面的示例中:2011-09-17 00:00:00,但遇到了一些问题。这是我得到的:
SELECT * FROM emails WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), 1 week))
What am I doing wrong? Thanks
我究竟做错了什么?谢谢
回答by Cymen
I think you're missing INTERVAL
at the front of 1 week
:
我认为你INTERVAL
在前面失踪了1 week
:
SELECT *
FROM emails
WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL 1 week));
Here is a query that I ran that does work for the DATE_SUB()
part:
这是我运行的一个对DATE_SUB()
零件有效的查询:
SELECT *
FROM wp_posts
WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL 4 WEEK);
You can use a negative value to go do a "N weeks before given date" query so something like this would work:
您可以使用负值来执行“给定日期前 N 周”的查询,这样就可以了:
SELECT *
FROM wp_posts
WHERE post_modified > DATE_SUB(CURDATE(), INTERVAL -1 WEEK);
Or:
或者:
SELECT *
FROM emails
WHERE (DATE(date) = date_sub(date('2011-09-17 00:00:00'), INTERVAL -1 week))
回答by Adam Bailin
Try this, I like to stick with DATE_ADD and just use a negative value.
试试这个,我喜欢坚持使用 DATE_ADD 并且只使用一个负值。
SELECT * FROM emails WHERE date >= DATE_ADD('2011-09-17 00:00:00', INTERVAL -1 WEEK)
回答by Fawad Ghafoor
SELECT * FROM wp_posts
WHERE post_modified
BETWEEN SYSDATE() - INTERVAL 7 DAY
AND SYSDATE();