Выберите записи с предыдущей недели в MySQL - PullRequest
7 голосов
/ 12 сентября 2011

У меня есть данные, в которых есть столбец даты (Гмд Ч: i: с) (тип 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))

Что я делаю не так? Спасибо

Ответы [ 3 ]

23 голосов
/ 12 сентября 2011

Я думаю, что вам не хватает 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))
3 голосов
/ 18 апреля 2012
SELECT * FROM wp_posts
WHERE post_modified  
BETWEEN SYSDATE() - INTERVAL 7 DAY
AND SYSDATE();
3 голосов
/ 12 сентября 2011

Попробуйте, мне нравится придерживаться DATE_ADD и просто использовать отрицательное значение.

SELECT * FROM emails WHERE date >= DATE_ADD('2011-09-17 00:00:00', INTERVAL -1 WEEK)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...