Você precisa especificar o modo 3 na chamada mysql YEARWEEK:
SELECT YEARWEEK(now(),3);
O PHP
date()
espaço reservado W
retorna o número da semana de acordo com a especificação ISO 8601
. Isso significa que as semanas começam na segunda-feira (não no domingo), a primeira semana do ano é o número 1 (não 0), e essa semana é a primeira que com mais da metade de seus dias no ano novo (portanto, tem que ser janeiro até quinta-feira). De acordo com a documentação do MySQL Função SEMANA
, essa combinação de opções é o modo 3. Além disso, para inserir a nota de Alles na resposta aceita porque é importante:os espaços reservados
Y
e W
não vá junto. Se você quiser o ano que acompanha o número da semana ISO, você deve usar o
em vez de Y
. Por exemplo, considere a semana que começa na segunda-feira, 29 de dezembro de 2014:date('YW', mktime(0,0,0,12,29,2014)); #=> 201401 : 1st week of 2014??
date('oW', mktime(0,0,0,12,29,2014)); #=> 201501 : better