Filtrar busqueda por campo fecha tipo Timestamp

Buenas comunidad.

Quisiera saber como puedo hacer una busqueda en la base de datos, filtrando por un campo fecha(timestamp).

Esta es la consulta que debo hacer, pero tambien debo filtrar por la fecha que se hizo el movimiento.




 $movimiento = Movimiento::model()->findByAttributes(array('cliente_idcliente' => $cliente, 'tipopublicacion_idtipopublicacion' => $idpublicacion)); //Asi funciona la consulta



Pero necesito que la consulta quede de esta forma, pero no he logrado que me funcione




 $movimiento = Movimiento::model()->findByAttributes(array('cliente_idcliente' => $cliente, 'tipopublicacion_idtipopublicacion' => $idpublicacion, 'fechamov' => $fecha)); 



Donde $fecha = "2015-04-08"; // Ejemplo de fecha.

Si alguien pudiera ayudarme, estaria muy agradecido.

Since this is one of your first posts, you are not allowed to embed links in your post.

Below is the content of your post:

Ten en cuenta, que el timestamp es una medida exacta del tiempo, así que si lo guardaste añadiendo horas minutos y segundos, nunca va a ser igual, tendrás que hacer un between o una doble comparaciónmayor igual a fecha y menor al dia siguiente y lo segundo procura convertir esa fecha a timestamp antes de hacer la comparación

Puedes usar esta función del core de php

datetime.gettimestamp.php

Hola jpunanua.

Gracias por contestar, pero en la base de datos las fechas quedan guardadas de la siguiente forma




 2015-04-08 00:00:00



No estoy guardando la hora, solo la fecha.

Sabes como puedo formatear el string $fecha = "2015-04-08", para que al comparar con el campo fecha de la base de datos, pueda arrojar buena la consulta.

En tu acción del controller puedes instaciar tu modelo


$model = new Peticiones();

Donde tendras que cambiar Peticiones() por el nombre de tu modelo. De esta manera en la misma accion del controller puedes asignarle un valor a tu variable fecha, para que de esta manera ese valor ya lo conosca tu model donde debes tener tu query


$model->date_first = "2015-04-10";

Recuerda cambiar date_first por el nombre de tu campo como se llama en el modelo.

En resumen podrias hacer algo asi:


$model = new nombredetumodelo();

$model->nombredetucampocomoestaenelmodel = "2015-04-10"

$model->busquedaPorFecha(); 



Espero a verme explicado

Saludos.

Muchas gracias por responde.

Entiendo lo que me quieres decir, pero el problema no es en recibir la variable fecha el problema es que necesito hacer una consulta a una tabla por determinada fecha, esta fecha ya la recibo en el controlador, pero el problema es que cuando hago la consulta no me arroja nada.

Esta es la consulta:




 $movimiento = Movimiento::model()->findByAttributes(array('cliente_idcliente' => $cliente, 'tipopublicacion_idtipopublicacion' => $idpublicacion, 'fechamov' => $fecha)); 



Lo que pasa es que $fecha es un String de este tipo "2015-04-15" y en la base de datos fechamov es de tipo timestamp con este formato "2015-04-15 00:00:00". Entonces creo que necesito convertir $fecha al mismo formato para q2ue cuando las compare sean iguales y me funcione la consulta.

Espero haberme explicado, y me puedan ayudar

Gracias

SOLO AGREGALE EL LIKE y LO SOLUCIONA…, dentro de tu método search de tu model busca el campo y al final ponle ",true" dentro del $criteria en el campo fecha y listo…, ya te realiza las busquedas tal cuál, inclusive has la consulta dentro de tu motor de db con like y te la regresa, sin esto siempre vas a tener que estar poniendo las horas, minutos y segundos, ya indicando LIKE "%%" en db se soluciona en en yii en tu model donde tienes esa fecha solo ponlo a true y listo!!!