Как сделать: «между СЕГОДНЯ И СЕГОДНЯ-7»? - PullRequest
3 голосов
/ 08 июня 2011

Мне нужно найти учетную запись, созданную на текущий день, и т. Д. За последние 7 дней.

Чтобы найти свои результаты на сегодня, это работает, и я делаю это:

SELECT * FROM `account` where DATE(created_at) = DATE(NOW())

Но я не знаю, как это сделать, чтобы получить последний 7-дневный аккаунт.

Я пробовал что-то подобное, но безуспешно:

SELECT * FROM `account` where DATE(created_at) BETWEEN DATE(NOW()) AND DATE(NOW()-7)

У вас есть идея?

Ответы [ 4 ]

23 голосов
/ 08 июня 2011

Попробуйте:

BETWEEN (NOW() - INTERVAL 7 DAY) AND NOW()
20 голосов
/ 08 июня 2011

в mysql:

SELECT * FROM `account` 
WHERE DATE(created_at) > (NOW() - INTERVAL 7 DAY)
3 голосов
/ 08 июня 2011

Если created_at имеет индекс, и вы не хотите, чтобы оптимизатор не использовал его, я бы рекомендовал следующий шаблон (при условии, что created_at содержит дату и время):

WHERE created_at >= CURRENT_DATE - INTERVAL 7 DAY
  AND created_at <  CURRENT_DATE + INTERVAL 1 DAY

Это охватывает диапазон от дня ровно неделю назад до сегодняшнего дня (включительно), итого 8 дней.

0 голосов
/ 08 июня 2011

также взгляните на функции MySQL ADDDATE (), DATE_ADD (), DATE_SUB ()

, например

ADDDATE(DATE(NOW()), -7)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...