Я работаю над приложениями на основе PHP и MySQL. Вы можете создавать события в нем, делать оговорки и так далее. Давайте предположим, что у меня есть таблица MySql:
--table 'events'
+------+---------------------+---------------------+
| name | startdate | enddate |
+------+---------------------+---------------------+
| aaa | 2014-10-28 00:00:00 | 2014-10-28 23:59:59 |
| bbb | 2015-01-01 10:00:00 | 2015-01-01 16:00:00 |
| ccc | 2014-12-24 17:00:00 | 2014-12-28 08:30:30 |
+------+---------------------+---------------------+
То, что мне нужно, это чтобы получить все даты, где происходят события. Таким образом, для событий, которые начинаются и заканчиваются в один и тот же день, я хотел бы получить одну дату, а для событий на несколько дней я хотел бы получить дату начала, а затем даты до даты окончания. Итак, ожидаемый результат будет выглядеть так:
+------------+
| dates |
+------------+
| 2014-10-28 |
| 2015-01-01 |
| 2014-12-24 |
| 2014-12-25 |
| 2014-12-26 |
| 2014-12-27 |
| 2014-12-28 |
+------------+
Конечно, я пытался искать здесь и знать, что есть похожие вопросы, на которые даны ответы, но они просто показывают даты между данной датой и не учитывают события «одного дня».
Заранее благодарю за любую помощь.
РЕДАКТИРОВАТЬ: Причина этого заключается в том, чтобы показать, в какие дни есть какие-либо события в представлении календаря.
$getEvents = mysqli_query("SELECT ...... You query");
$row_getEvents = mysqli_fetch_assoc($getEvents);
do {
$date = date("Y-m-d", strtotime($row_getEvents['startdate']));
$end_date = date("Y-m-d", strtotime($row_getEvents['enddate']));
while (strtotime($date) <= strtotime($end_date)) {
echo "$date\n";
$date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
}
} while ($row_getEvents = mysqli_fetch_assoc($getEvents));
SELECT name
FROM events
WHERE start BETWEEN ' 2014-10-28' AND '2014-10-28'
попробуй это