我正在尝试制作可用性日历,并且需要知道如何在获取日期时比较日期。
我的数据库是
id
start_date
end_date
status
现在假设我想在下个月获取预订,即从 2010-03-01 到 2010-04-01。我应该如何获取这些数据?我确实尝试使用 and 条件直接进行比较,但没有帮助。
数据库中的格式是 yyyy-mm-dd,我使用相同的格式进行比较。但是直接比较是行不通的。
此处专业地解释了如何获取与另一个范围相交的日期范围:比较日期范围
总之,您可能想要查询如下内容:
$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));
这将找到下个月内的所有事件。它们可能会更早开始或更晚结束,但它们会与月份相交。
假设您的表名为 Events 并且您的日期存储在 $start_date 和 $end_date 中,我相信这应该有效:
$results = $this->Event->find('all', array(
'conditions' => array(
'start_date >=' => $start_date,
'end_date <' => $end_date
)
));
它将获取在您的范围内开始和结束的所有记录。