MySQL даты между начальной и конечной датами события

Я работаю над приложениями на основе 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 |
+------------+

Конечно, я пытался искать здесь и знать, что есть похожие вопросы, на которые даны ответы, но они просто показывают даты между данной датой и не учитывают события «одного дня».

Заранее благодарю за любую помощь.

РЕДАКТИРОВАТЬ: Причина этого заключается в том, чтобы показать, в какие дни есть какие-либо события в представлении календаря.

2

Решение

$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));
1

Другие решения

SELECT name
FROM events
WHERE start BETWEEN ' 2014-10-28' AND '2014-10-28'

попробуй это

-1

По вопросам рекламы [email protected]