Jesteś na dobrej drodze, jeśli chodzi o działanie MySQL, mając różne tryby dla funkcji związanych z tygodniem, które mogą dawać różne wyniki. http://dev.mysql .com/doc/refman/5.5/en/date-and-time-functions.html#function_week
Rozumiem, że tryb MySQL, który jest odpowiednikiem logiki daty w PHP, to tryb 3, który jest standardem ISO tygodnia dat http://en.wikipedia.org/wiki/ISO_week_date
To ma tygodnie rozpoczynające się w poniedziałki i tygodnie o numerach 1-53.
Musisz więc użyć WEEK(date_field, 3)
aby uzyskać wartości zgodne z PHP.
Jako alternatywne podejście, jedna rzecz, którą znalazłem przydatną w przypadkach, gdy potrzebna jest możliwość elastycznego wyszukiwania w różnych zakresach dat lub agregacjach (I-Q4, H1 - H2 itd.) lub gdy może być konieczne wykorzystanie innych tygodni niż Obsługa PHP polega na użyciu tabeli pomocniczej daty w MySQL (podobnej do tej, której można użyć jako tabeli wymiarów daty w hurtowni danych, jeśli ją znasz). Może dać ci wygodny stół, do którego możesz dołączyć, aby sprawdzić zakresy dat. Coś takiego powinno działać:
http://databobjr.blogspot.com /2012/06/create-date-dimension-table-in-mysql.html