Просто используйте MySQL week()
function .
Пример:
mysql> create table daten (a date, b date);
mysql> insert into daten values ('2011-04-14', '2011-04-12');
mysql> insert into daten values ('2011-04-14', '2011-04-22');
mysql> select * from daten where (week(a)=week(b) and year(a)=year(b)) or a<b;
+------------+------------+
| a | b |
+------------+------------+
| 2011-04-14 | 2011-04-12 |
+------------+------------+
Это даст вам все записи с той же или более ранней календарной неделейчем б.Обратите внимание, что week(a)<=week(b)
не будет работать, потому что недели начинаются снова каждый год.
Примечание: Существует более одного соглашения для подсчета календарных недель (неделя начинается в воскресенье или в понедельник, разныеначало первой недели года).Вы можете передать необязательный второй параметр "mode" в week()
, чтобы указать, какое соглашение использовать;смотри документы.Конечно, для этой проблемы важен только день начала недели, а не первая неделя года.