Pregunta

Estoy tratando de hacer un calendario de disponibilidad y la necesidad de saber cómo puedo comparar fechas en las que ir a buscar a él.

Mi DB es

id
start_date
end_date
status

Ahora supongamos que quiero a buscar a la reserva en el próximo mes, es decir, desde 2010-03-01 a 2010-04-01. ¿Cómo debo ir a buscar estos datos? Yo probé la comparación directa utilizando una y condición, pero no sirvió de nada.

El formato en el DB es aaaa-mm-dd y yo utilizó la misma para comparar. Pero la comparación directa no funciona.

¿Fue útil?

Solución

Cómo buscar a intervalos de fechas que se cruzan con otra gama se explica por expertos aquí: Al comparar los intervalos de fechas

En resumen, es probable que desee consulta para algo como esto:

$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));

Esto encontrará todos los eventos dentro del próximo mes. Ellos pueden comenzar antes o terminar más tarde, pero van a cruzarse con el mes.

Otros consejos

Asumiendo que su tabla se denomina eventos y las fechas se almacenan en $ y $ fecha_inicial fecha_final, creo que esto debería funcionar:

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

Se obtendrá todos los registros que comienzan y terminan dentro de su rango.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top