我正在尝试制作可用性日历,并且需要知道在获取日期时如何比较日期。
我的数据库是
id
start_date
end_date
status
现在假设我想在下个月取得预订,即从2010-03-01到2010-04-01。我该如何获取这些数据?我确实尝试直接使用和条件进行比较,但没有帮助。
DB中的格式是yyyy-mm-dd,我用同样的方法进行比较。但直接比较不起作用。
答案 0 :(得分:4)
如何获取与其他范围相交的日期范围,请在此处进行专业解释:Comparing date ranges
总之,您可能希望查询类似的内容:
$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));
这将在下个月内找到所有活动。它们可能会提前开始或稍后结束,但它们会与月份相交。
答案 1 :(得分:1)
假设您的表名为Events,并且您的日期存储在$ start_date和$ end_date中,我相信这应该有效:
$results = $this->Event->find('all', array(
'conditions' => array(
'start_date >=' => $start_date,
'end_date <' => $end_date
)
));
它将获得在您的范围内开始和结束的所有记录。