Я нашел эту тему, пока я искал для этого одно и то же. Вот что я придумал, сработало отлично.
У меня была база данных с адресами электронной почты и временными метками unix, когда они подписались на список электронной почты. Мне хотелось узнать, что такое еженедельная подписка.
$startdate = 1325376000; // Jan 1 2012
//$startdate = 1293926400; // Jan 1 2011
$currentstart = $startdate;
$currentend = $startdate + 604800; // 604800 = 1 week
while($currentend < 1356998400) {
$sql = "SELECT * FROM the_table WHERE unixdate > $currentstart AND unixdate <= " . ($currentstart + 604800 - 1);
$result = mysql_query($sql);
echo date('D Y-m-d', ($currentstart)) . " - " . date('D Y-m-d', ($currentstart + 604800 - 1)) . ": <strong>" . mysql_num_rows($result) . "</strong><br />";
$currentstart = $currentend;
$currentend += 604800;
}
Вы можете изменить номер 604800, чтобы делать интервалы в 30 дней или 365 дней или ежедневно или что угодно.
Я уверен, что это некрасиво - я не лучший кодер, но мне пришлось оставить свое решение для тех, кто приходит позади меня.
ничего себе - это выглядит потрясающе. К сожалению, мой скрипт должен поддерживать более низкие версии PHP: / –