Cómo configurar SQL para encontrar registros desde el domingo pasado hasta este domingo (1 semana)

Esto es similar a lo que tengo ahora, que es:

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

Esto me dará un recuento de las veces que un autor ha publicado en la última semana.

En su lugar, quiero tenerlo así que si tengo que ejecutar el programa el domingo a las 5:30 PM para buscar publicaciones del último domingo de 12:00 AM a este domingo de 12:00 AM. Del mismo modo, si me olvido de ejecutarlo el domingo y es lunes ahora. Todavía quiero que se ejecute desde el último domingo de 12:00 a.m. hasta el domingo que justo después de las 12:00 AM

Editar:

He hecho lo que necesitaba usando PHP para formar la declaración SQL correcta, pero todavía tengo curiosidad por cómo hacerlo solo en 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'";
?>

Respuestas a la pregunta(1)

Su respuesta a la pregunta