PHP / MySQL: получение последних * полных * недель - PullRequest
1 голос
/ 24 ноября 2008

В настоящее время я использую следующий SQL для извлечения записей из таблицы за последние семь дней:

purchased >= date_sub(now() ,interval 7 day)

Однако мне нужно изменить это, чтобы оно получало записи за последние полные недели (с полуночи субботы до полуночи субботы). Таким образом, в основном, в течение недели результаты никогда не меняются, но когда кто-то посещает воскресное утро, он обновляется.

Я просто не могу понять, как работать в дни и т. Д. Кроме того, есть ли встроенные функции MySQL для этого?

Надеюсь, я объяснил это достаточно ясно. Это в приложении PHP.

Ответы [ 2 ]

2 голосов
/ 24 ноября 2008

см. Функцию MySQL YEARWEEK () .

Так что вы могли бы сделать что-то вроде

SELECT * FROM table WHERE YEARWEEK(purchased) = YEARWEEK(NOW());

Вы можете изменить начальный день недели, используя параметр второго режима

Что может быть лучше, так это как-то вычислить дату «последнего воскресенья в 00:00», и тогда базе данных не нужно будет запускать функцию для каждой строки, но я не мог найти очевидный способ сделать это. что в MySQL. Однако вы можете легко сгенерировать это в php и сделать что-то вроде

$sunday = date(('Y-m-d H:i:s'), strtotime('last sunday 00:00'));
$sql = "SELECT * FROM table WHERE purchased >= '$sunday'";
0 голосов
/ 24 ноября 2008

MySQL имеет функцию WEEK () , которая позволяет получить числовую неделю года из даты. Вы можете получить (неделя сегодняшнего дня) -1 и сравнить ее с неделей ваших записей, по которым вы фильтруете.

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