如何在Cakephp中比较和获取日期?

时间:2010-02-20 14:42:00

标签: cakephp date compare fetch

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

我的数据库是

id
start_date
end_date
status

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

DB中的格式是yyyy-mm-dd,我用同样的方法进行比较。但直接比较不起作用。

2 个答案:

答案 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
    )
));

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