Foros del Web » Programando para Internet » PHP »

Consulta de una fecha a otra fecha

Estas en el tema de Consulta de una fecha a otra fecha en el foro de PHP en Foros del Web. Hola, tengo el siguiente problema amigos: * Tengo un sistema de historias medicas en el cual los empleados de una empresa deben registrarse para llevar ...
  #1 (permalink)  
Antiguo 10/03/2009, 07:33
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Información Consulta de una fecha a otra fecha

Hola, tengo el siguiente problema amigos:


* Tengo un sistema de historias medicas en el cual los empleados de una empresa deben registrarse para llevar el control, yo deseo agregar un modulo de busqueda por fecha ya que deseo visualizar que personas han utilizado las historias medicas de una fecha a otra.


Ejemplo: buscar todos los usuarios registrados del 02/03/2009 al 10/03/2009

en este ejemplo estoy consultando entre 8 dias, y quiero que me muestre todas las perosnas que se hayan regustrado en ese lapso de dias..

El campo se llama:

$fecha_ingreso




Gracias.....
  #2 (permalink)  
Antiguo 10/03/2009, 08:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta de una fecha a otra fecha

Más bien eso lo debes de hacer desde el lenguaje SQL para que solo te devuelva aquellos registros que cumplan entre esas dos fechas.

Saludos
  #3 (permalink)  
Antiguo 10/03/2009, 08:43
 
Fecha de Ingreso: mayo-2005
Mensajes: 72
Antigüedad: 19 años
Puntos: 1
Respuesta: Consulta de una fecha a otra fecha

el codigo va asi:


Cita:
$fechaDesde = $_POST['fechaDesde'];
$fechaHasta = $_POST['fechaHasta'];

la sentecia SQL asi:
$sql = "select * from tabla where campofecha BETWEEN '$fechaDesde' and '$fechaHasta'";
recuerda que el formato de la fecha en la sentencia debe de ser igual al de la base de datos.

suerte.
__________________
Diseñador Gráfico / Programador PHP / Cisco Certified Network Associate (CCNA) / CSS / Java Scripting / SQL / C-Scripting / Entre otros...

:cool:
BOX
  #4 (permalink)  
Antiguo 10/03/2009, 08:57
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Consulta de una fecha a otra fecha

Cita:
Iniciado por Boxy Ver Mensaje
el codigo va asi:




recuerda que el formato de la fecha en la sentencia debe de ser igual al de la base de datos.

suerte.



Si pero el problema esque yo solo tengo una fecha en mi base de datos:

$fecha_ingreso



no tengo otro fecha.

y deseo es corroborar de una fecha a otra..



ejemplo: Tengo en mi base de datos asi-.

fecha_ingreso | Nombre | Identidad |
________________________________________


02/03/2009 Joel 234567
03/03/2009 Jose 345678
09/03/2009 Pedro 23456
15/04/2009 xxxxx 345678


y deseo buscar entre 02/03/2009 y 09/03/2009 entonces quieor que me muestre solo esas fecha las que estan de rojo.


como podria hacer eso?
  #5 (permalink)  
Antiguo 10/03/2009, 08:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta de una fecha a otra fecha

Tal cual como te dijo Boxy, si ves la consulta SQL eso es lo que realiza.

Saludos
  #6 (permalink)  
Antiguo 10/03/2009, 09:06
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Consulta de una fecha a otra fecha

Fijate me sale este error


La consulta falló: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BETWEEN '01/01/2009' and '02/01/2009' at line 1



y estoy haciendo asi:


$dia1=$_POST['dia1'];
$mes1=$_POST['mes1'];
$ano1=$_POST['ano1'];
$fecha_desde=($dia1 ."/". $mes1 ."/". $ano1);

$dia2=$_POST['dia2'];
$mes2=$_POST['mes2'];
$ano2=$_POST['ano2'];
$fecha_hasta=($dia2 ."/". $mes2 ."/". $ano2);


$sql=mysql_query("SELECT * from eventualidades where $fecha_inicio BETWEEN '$fecha_desde' and '$fecha_hasta")or die("La consulta falló: " . mysql_error());
  #7 (permalink)  
Antiguo 10/03/2009, 09:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta de una fecha a otra fecha

Donde estas definiendo $fecha_inicio? prueba imprimir mejor el campo:
Código php:
Ver original
  1. $query = "SELECT * from eventualidades where $fecha_inicio BETWEEN '$fecha_desde' and '$fecha_hasta";
  2. echo $query;
  3. $sql=mysql_query($query)or die("La consulta falló: " . mysql_error());

Saludos
  #8 (permalink)  
Antiguo 10/03/2009, 09:18
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Consulta de una fecha a otra fecha

Esque $fecha_inicio es la fecha que se guarda cuando se registra un nuevo trabajador

ejemplo:


$fecha_inicio | Nombre |
________________________

02/02/2009 | joel |
04/02/2009 | jose |
09/02/2009 | perez |


y cuando voy a realizar la busqueda tengo un formulario donde se debe especificar:



fecha desde | fecha_hasta
__________________________

02/02/2009 | 09/02/2009




esas fechas de FECHA_DESDE _______ FECHA_HASTA (no existen en la base de datos, la unica que esta en la base de datos es $fecha_inicio)

Última edición por joelluis17; 10/03/2009 a las 09:20 Razón: Corecccion
  #9 (permalink)  
Antiguo 10/03/2009, 10:25
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Consulta de una fecha a otra fecha

Cita:
Iniciado por joelluis17 Ver Mensaje
Esque $fecha_inicio es la fecha que se guarda cuando se registra un nuevo trabajador
[...]

$fecha_inicio | Nombre |
________________________
- ¿En verdad tu campo de la BD se llama "$fecha_inicio"?; Error; procura utilizar siempre caracteres ASCII
- Si no es así y con "$fecha_inicio" te refieres a una variable PHP (así se entiende), que según tu primer párrafo que cito, es una fecha ... lee bien:

Cita:
Iniciado por Boxy Ver Mensaje
la sentecia SQL asi:
$sql = "select * from tabla where campofecha BETWEEN '$fechaDesde' and '$fechaHasta'";
- ¿Y el campo sí está definido como de tipo fecha (DATE)?
- Si sigues teniendo problemas, lee y aplica lo que te dijo GatorV: imprime la consulta tal cuál se está realizando.

- Tu problema es con SQL, no con PHP (....). Quizá necesites "leer algo" antes; intenta realizar las consultas directamente en la BD.

Suerte
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 10/03/2009, 10:35
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Consulta de una fecha a otra fecha

no mi cmapo en la base de datos se llama! fecha_inicio, solo que en la consulta debe usar $ y lo coloque asi. para que entendieran que es el que llamo de mi base de dato.


el campo lo tnego como VARCHAR, debo cambiarlo a DATE? O DATETIME?
  #11 (permalink)  
Antiguo 10/03/2009, 11:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta de una fecha a otra fecha

Primeramente sí, debe de ser un campo del tipo DATE, luego, a que te refieres que en la consulta debe de usar $??

No se si sepas pero en PHP si tu usas $ en un string este es reemplazado:
Código php:
Ver original
  1. $nombre = "Juan";
  2. echo "Hola $nombre como estas?"; // Imprime Hola Juan como estas?

Saludos.
  #12 (permalink)  
Antiguo 10/03/2009, 11:55
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Consulta de una fecha a otra fecha

Yo se eso, creo que me estas subestimando! talvez no entiendes loq ue realmente queiro decir!

conozco perfectamente cuando usar un $ solo lo mencionadaba para especificar mejor!

el campo lo tengo en VARCHAR porque la fecha la ingreso desde un formulario y DATE me da el formato de 0000-00-00 y yo deseo es 00/00/0000

la consulta que me han dado no me funciona!

solo quiero consultar:


de una fecha a otra: desde 02/03/2009 hasta 09/03/2009 es un ejemplo.

teniendo en cuenta que la varibale que tengo en mia BD es fecha_inicio de formato 00/00/0000


Gracias...
  #13 (permalink)  
Antiguo 10/03/2009, 12:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta de una fecha a otra fecha

Tienes que hacer una conversión al tipo DATE ya que si no, la BDD no puede hacer un between entre un campo de texto, al menos no de la manera que lo esperas.

Lo mejor es tener un campo TIMESTAMP, y formateas la fecha al rescatar el valor usando date().

Saludos
  #14 (permalink)  
Antiguo 10/03/2009, 13:16
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Consulta de una fecha a otra fecha

pero la fechala debe ingresar el usuario y registrarla en la base de datos!

entonces la cambio de VARCHAR a DATE

entonces en el formulario debere cambiar la fecha de 00/00/000 a 0000-00-00 ??????

lo intnte y no me funciona lo que hace es colocar automaticamnete la fecha vacia asi

0000-00-00


??????????? que puedo hacer exactamente este proceso me tiene loco.... primea vez que me piden hacer eso en mis trabajos...
  #15 (permalink)  
Antiguo 10/03/2009, 13:21
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Consulta de una fecha a otra fecha

Cita:
Iniciado por joelluis17 Ver Mensaje
conozco perfectamente cuando usar un $ solo lo mencionadaba para especificar mejor!
Si se dicen las cosas tal cual son, se entendería mejor, se supone "hablamos el mismo lenguaje", si le pones un $, para nosotros es una variable.

Cita:
Iniciado por joelluis17 Ver Mensaje
el campo lo tengo en VARCHAR porque la fecha la ingreso desde un formulario y DATE me da el formato de 0000-00-00 y yo deseo es 00/00/0000
De igual manera, procura usar la información tal cual es. Para una computadora no es lo mismo decir "uno + dos" que "1+ 2".

MySQL (y ¿todas las BDs?) tienen funciones para manejar/alterar el formato de la fecha, tanto para su manejo interno como para su salida. Una de ellas: DATE_FORMAT(), nuevamente, quizá necesites conocer un poco más de Bases de Datos.

Entonces, si manejas la información como lo que son (fechas), tendrás a disposición funciones y maneras de realizar operaciones con dicha información de manera nativa, lo que se traduciría que sería más simple y eficiente.

Para no dejarlo, una solución utilizando VARCHAR --osea, lo que tienes ahora--, sería generar tú desde PHP las fechas que existen entre tus parámetros y extraer todos los campos donde el de la fecha tenga alguno de esos valores ... obviamente, más complicado e ineficiente (aunque funcionaría ).

Suerte
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #16 (permalink)  
Antiguo 10/03/2009, 13:25
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Consulta de una fecha a otra fecha

Cita:
Iniciado por joelluis17 Ver Mensaje
entonces en el formulario debere cambiar la fecha de 00/00/000 a 0000-00-00 ??????
Puede ser una opción. Otra parsear tu dato del formulario con PHP y cambiar el formato ... otra (sugiero): http://dev.mysql.com/doc/refman/5.1/...on_str-to-date

Enfócate en la información, no en el formato.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #17 (permalink)  
Antiguo 10/03/2009, 13:30
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Consulta de una fecha a otra fecha

Podrias darme un ejemplo?


ya cambie a DATE! y registro la fecha en ese formato, pero igual no me da el resultado que espero que son la consulta a esas fechas!
  #18 (permalink)  
Antiguo 10/03/2009, 14:13
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Consulta de una fecha a otra fecha

Cita:
Iniciado por joelluis17 Ver Mensaje
Podrias darme un ejemplo?
¿Lo que vienen en la documentación no te sirven?.

Sin mayor información, así de rápido:
Código sql:
Ver original
  1. SELECT DATE_FORMAT(fecha_inicio, '%d/%m/%Y') AS fecha_inicio FROM eventualidades
  2. WHERE fecha_inicio BETWEEN STR_TO_DATE('$fecha_desde', '%d/%m/%Y') AND STR_TO_DATE('$fecha_hasta', '%d/%m/%Y');

Obviamente, hay dos variables PHP que están un tanto fuera de contexto (planteo SQL puro).

Esa query debería mostrar --salida-- fechas en formato dd/mm/yyyy que están entre "$fecha_desde" y "$fecha_hasta" con valores --de entrada, osea los valores de las variables-- con formato 'dd/mm/yyyy'

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #19 (permalink)  
Antiguo 10/03/2009, 14:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta de una fecha a otra fecha

El ejemplo ya lo tienes:
Código sql:
Ver original
  1. SELECT * FROM tabla WHERE campofecha BETWEEN '2009/01/01' AND '2009/01/10'

Saludos
  #20 (permalink)  
Antiguo 10/03/2009, 14:21
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Consulta de una fecha a otra fecha

Ya lo resolvi,

Primero que nada gracias a todos.... Siento si cause algunas molestias...

Segunod aqui dejo la solocion por si alguien tiene la misma duda que yo que he visto que son muchos:



En la base de datos mas especificamente en la tabla que utilizaremos debemos colocar la fecha en DATE como dijo jam1138.

Un ejemplo seria asi:


fecha_ingreso | nombre
________________________

DATE | CHAR




Luego;


en tu formulario de registro deberas colocar el formato de la fecha en 0000-00-00 ya que el tipo DATE por defecto es 0000-00-00 año-mes-dia


luego en la consulta solo deben colocar asi:


$fecha_desde=$_POST['fecha_desde'];

$fecha_hasta=$_POST['fecha_hasta'];



$consulta=mysql_query("select * from TUTABLA where FECHA_QUE_ESTA_EN_BD BETWEEN '$fecha_desde' and '$fecha_hasta'");

Y listo!


Espero ayudar a las perosnas que tienen la misma duda y gracias a los que me ayudaron!

Última edición por jam1138; 10/03/2009 a las 14:33 Razón: Invitación contra las políticas
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 08:00.