1

我正在尝试制作可用性日历,并且需要知道如何在获取日期时比较日期。

我的数据库是

id
start_date
end_date
status

现在假设我想在下个月获取预订,即从 2010-03-01 到 2010-04-01。我应该如何获取这些数据?我确实尝试使用 and 条件直接进行比较,但没有帮助。

数据库中的格式是 yyyy-mm-dd,我使用相同的格式进行比较。但是直接比较是行不通的。

4

2 回答 2

4

此处专业地解释了如何获取与另一个范围相交的日期范围:比较日期范围

总之,您可能想要查询如下内容:

$start = date('Y-m-d');
$end = date('Y-m-d', strtotime('+1 month'));

$conditions = array('Event.start <=' => $end, 'Event.end >=' => $start);

$this->Event->find('all', array('conditions' => $conditions));

这将找到下个月内的所有事件。它们可能会更早开始或更晚结束,但它们会与月份相交。

于 2010-02-21T00:20:56.603 回答
1

假设您的表名为 Events 并且您的日期存储在 $start_date 和 $end_date 中,我相信这应该有效:

$results = $this->Event->find('all', array(
    'conditions' => array(
        'start_date >=' => $start_date,
        'end_date <'    => $end_date
    )
));

它将获取在您的范围内开始和结束的所有记录。

于 2010-02-20T16:08:36.127 回答