Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

[SOLUCIONADO] Cakephp Busqueda sql campo datetime solo por la hora

Estas en el tema de Busqueda sql campo datetime solo por la hora en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/05/2013, 05:44
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 6 años, 2 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
  #2 (permalink)  
Antiguo 29/05/2013, 11:33
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 6 años, 2 meses
Puntos: 4
Respuesta: Busqueda sql campo datetime solo por la hora

Bueno ya encontre mi solucion yo posteo pero casi que se puede borrar el hilo entero que hablo un poco solo xDD

Código PHP:
Ver original
  1. $formularios = $this->Formulario->find('all',array('conditions'=>$condition,'fields'=>array('Formulario.origen_id','Formulario.tipo_id','COUNT(Formulario.tipo_id) AS cantidad','DATE_FORMAT(Formulario.created, "%H") AS hora'), 'group' => 'Formulario.tipo_id,hora','recursive' => -1));

Asi se quedaria la condicion, agrupado por el tipo y la hora de creacion

Etiquetas: cakephp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:29.