Как настроить SQL для поиска записей с прошлого воскресенья по это воскресенье (1 неделя)
Это похоже на то, что у меня сейчас, а именно:
SELECT COUNT(author) FROM `posts` WHERE `date` >= DATE_SUB(CURDATE(), INTERVAL 1 WEEK) AND author='FooBar'
Это подсчитает, сколько раз автор писал за последнюю 1 неделю.
Вместо этого я хочу иметь его, поэтому, если я хочу запустить программу в воскресенье в 17:30, чтобы искать сообщения с прошлого воскресенья 12:00 до этого воскресенья 12:00. Точно так же, если я забуду запустить его в воскресенье, а сейчас понедельник. Я все еще хочу, чтобы он работал с прошлого воскресенья 12:00 до воскресенья, которое только после 12:00
Редактировать:
Я сделал то, что мне было нужно, используя PHP для формирования правильного оператора SQL, но мне все еще интересно, как это сделать только на 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'";
?>