Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/05/2013, 05:44
nanotk58
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años, 7 meses
Puntos: 4
Busqueda sql campo datetime solo por la hora

Bueno a ver si alguien me puede ayudar porque no consigo dar con la tecla.

Les cuento, te una aplicacion en cakephp, donde quiero hacer una consulta a la bdd para sacar un listado de cantidades

El siguiente codigo es valido, recibe 2 fechas y en el resultado obtengo la 'cantidad' agrupada por el campo 'tipo_id'.


Código PHP:
foreach ($origenes as $orig => $origvalue){
    
$condition = array();
    
$condition[] = array('AND' =>array('Formulario.created > '=>$fecha1'Formulario.created <= '=>$fecha2));
    
$formularios $this->Formulario->find('all',array('conditions'=>$condition,'fields'=>array('Formulario.id','Formulario.tipo_id','COUNT(Formulario.tipo_id) AS cantidad'), 'group' => 'Formulario.tipo_id''recursive' => -1));


Ahora lo que necesito es complicarlo un poco mas, quisiera hacer lo mismo, pero agruparlos tambien por la hora de creacion (campo created).

Problemas, el campo created es un datetime, asi que necesitaria, tomar solo la hora de creacion sin tener en cuenta ni los minutos ni los segundos.

Una cosa que probe, pero aclaro, me parece una burrada jaja

Es ponerle entre medio un bucle de 0 a 23, pero me dispara la cantidad de busquedas de 90 a 2200 (aprox). y claro tarda 4 minutos en ejecutarse y no es viable
Código PHP:
foreach ($origenes as $orig => $origvalue){
    for (
$z=0;$z 24;$z++){
        if (
$z 10){
            
$z1 '0'.$z;
        }else{
            
$z1 $z;
        }
        
$condition = array();
        
$condition[] = array('AND' =>array('Formulario.created > '=>$fecha1'Formulario.created <= '=>$fecha2));
        
$formularios $this->Formulario->find('all',array('conditions'=>$condition,'fields'=>array('Formulario.id','Formulario.tipo_id','COUNT(Formulario.tipo_id) AS cantidad'), 'group' => 'Formulario.tipo_id''recursive' => -1));
        
        
        
$condition[] = array('Formulario.created LIKE '=>'%-%-% '.$z1.':%:%');
    }
        

Asi que agradezco cualquier ayuda, saludos