Como configurar o SQL para encontrar registros do último domingo até domingo (1 semana)

Isso é semelhante ao que tenho agora, que é:

SELECT COUNT(author) FROM `posts` WHERE `date` >= DATE_SUB(CURDATE(), INTERVAL 1 WEEK) AND author='FooBar'

Isso me dará uma contagem de quantas vezes um autor postou na última semana.

Eu quero, em vez disso, para que eu possa executar o programa no domingo, às 17h30, para procurar por postagens do último domingo, 12h às 12h de domingo. Da mesma forma, se eu esquecer de executá-lo no domingo e é segunda-feira agora. Eu ainda quero que ele seja executado a partir do último domingo, 12:00 AM para o domingo, que acabou de passar as 12:00 AM.

Editar:

Eu fiz o que eu precisava usando o PHP para formar a instrução SQL correta, mas ainda estou curioso sobre como fazer isso apenas em SQL.

<?php
    $dayofweek = strftime("%A",time());
    if($dayofweek == "Sunday") {
        $last_sunday = date('Y-m-d h:i:s',strtotime('Last Sunday'));
        $this_sunday = date('Y-m-d h:i:s',strtotime('Sunday'));
    } else {
        $last_sunday = date('Y-m-d h:i:s',strtotime('Last Sunday',strtotime('Last Sunday')));
        $this_sunday = date('Y-m-d h:i:s',strtotime('Last Sunday'));
    }
    print "last_sunday={$last_sunday}<br>";
    print "this_sunday={$this_sunday}<br>";
    print "SELECT COUNT(author) FROM `posts` WHERE `date` <= '$this_sunday' AND `date` >= '$last_sunday' AND author='FooBar'";
?>

questionAnswers(1)

yourAnswerToTheQuestion