Obtenir le Dernier lundi - dimanche dates: Est-il un meilleur moyen?

Je suis en train de préparer une requête à mySQL d'attraper record de la semaine précédente, mais j'ai pour traiter les semaines du lundi au dimanche. J'avais initialement fait:

WHERE YEARWEEK(contactDate) = YEARWEEK(DATE_SUB(CURDATE(),INTERVAL 7 DAY))

de découvrir que mySQL traite semaines que le dimanche et le lundi. Donc à la place je suis d'analyse d'obtenir le commencer & date de fin en php comme ceci:

$i = 0; 
while(date('D',mktime(0,0,0,date('m'), date('d')-$i, date('y'))) != "Mon") { 
  $i++; 
}

$start_date = date('Y-n-j', mktime(0,0,0,date('m'), date('d')-($i+7), date('y')));
$end_date  = date('Y-n-j', mktime(0,0,0,date('m'), date('d')-($i+1), date('y')));

Cela fonctionne - il obtient la semaine de la date du lundi (marche à l'envers jusqu'à ce qu'un lundi est touché), puis calcule la semaine précédente dates en fonction à cette date.

Ma question est: Est-il une meilleure façon de le faire? Semble bâclée, et j'attends quelqu'un peut me donner une façon plus propre de le faire - ou peut-être pas parce que j'ai besoin du lundi au dimanche de semaines.

Modifier

Apparemment, il y a:

$start = date('Y-m-d',strtotime('last monday -7 days'));
$end   = date('Y-m-d',strtotime('last monday -1 days'));

C'est environ un million de fois plus lisible. Merci.

OriginalL'auteur Stomped | 2010-03-09