MySQL在事件的开始和结束日期之间进行日期

时间:2014-12-04 08:48:13

标签: php mysql date datetime between

我正在研究基于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 个答案:

答案 0 :(得分:1)

$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 :(得分:-1)

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

试试这个