PDA

Ver la versión completa : Buscar fecha por rango




paupau
12-05-2010, 02:51 PM
hola amigos tengo la siguiente duda necesito buscar en una tabla por rango de fechas, tengo dividida la fecha en 3 campos: dia(INT)2 - mes(INT)2 y año(INT)4, en el formulario tengo 2 cajas de texto 1 para la fecha 1 y otra para la fecha 2 los cuales tienen su propio calendario al momento de enviar los datos asia otra pagina que se llama consulta.php yo descompongo la fecha uno y fecha dos osea los divido en dias,mes y años de la siguiente forma:


$fecha=$_POST['fecha'];
$fecha2=$_POST['fecha2'];
//separo la fecha para realizar consulta
list($mes,$dia,$ano) = explode("/",$fecha);
list($mes2,$dia2,$ano2) = explode("/",$fecha2);

//elimino ceros ala izquierda del dia 1
$cadena=$dia;
$cadena=(string)(int)$cadena;

//elimino ceros ala izquierda del dia 2
$cadena3=$dia2;
$cadena3=(string)(int)$cadena3;
//fin de ceros



elimino ceros ala quierda del dia por que en mi tabla tengo el dia lo tengo con los numeros enteros ok ahora quiza ustedes me digan que no es optimo lo que estoy asiendo el separar la fecha en tres partes lo que pasa es que yo manejo una agenda que esta echo con php(poo),jquery,ajax lo baje ya prediseñada y pues esta programada orientada a objetos y yo en eso aun no le entiendo al todo y se me iso mas facil separar las fechas para asi hacer mis respectivas operaciones una de eyas es esto lo que quiero hacer una consulta ejemplo
quiero mostrar los registros que se ayan dado de alta del dia
13/12/2010 al 2/02/2011
esta consulta me muestra los registros que se encuentren en el rango de estas dos fechas yo lo estaba asiendo asi de la siguiente forma mi consulta era esta


conectar();
$reporte=mysql_query("select * FROM reporte where dia>=$cadena and dia<=$cadena3 ");
desconectar();


con eso yo asia el reporte por dia, pero como pueden ver en el ejemplo que les plantie entrarian tambien los años y los meses como le podria hacer??

Shell Root
12-07-2010, 04:23 PM
No lei del todo, que pereza todo ese texto, XD. Mirad el siguiente link, DATEADD (Transact-SQL) (http://msdn.microsoft.com/es-es/library/ms186819%28SQL.90%29.aspx)


DATEADD ( datepart , number, date )

Podrías crear un Store Procedure para mejorar las consultas, ya sea por, (día, mes, año)

paupau
12-07-2010, 04:28 PM
gracias camarada sell , lo resolvi ayer tube que juntar esas tres variable dia,mes,año y guardarlo en un campo date asi me fue mas facil entonces mi consuklta quedo asi


$ini=2010-12-02
$fin=2010-12-10
$reporte=mysql_query("select * FROM reporte WHERE DATE_FORMAT(fecha,'%Y-%m-%d') BETWEEN '$ini' AND '$fin' ");

lo posteo por si a alguien le sirve

kalvin
12-10-2010, 09:57 AM
Amigo solo como un aporte al tema, para ahorrarse todo este trabajo de tener que unir los campos, hacer el implode, construir la fecha, etc, es mejor que guardes tus fechas en un solo campo del tipo Date o Datetime y ais puedes hacer consultas y trabajos con fechas de una manera mas eficiente.