Foros del Web » Programando para Internet » PHP »

problema con fechas

Estas en el tema de problema con fechas en el foro de PHP en Foros del Web. Hola gente, Estoy armando un buscador, y se me presento un problema o con el esqueleto del DB o con mi poco conocimiento de PHP... ...
  #1 (permalink)  
Antiguo 11/04/2010, 08:48
 
Fecha de Ingreso: febrero-2009
Ubicación: Cordoba - Argentina
Mensajes: 22
Antigüedad: 15 años, 2 meses
Puntos: 0
problema con fechas

Hola gente,

Estoy armando un buscador, y se me presento un problema o con el esqueleto del DB o con mi poco conocimiento de PHP...

La tabla "usuarios" tiene varios campos entre ellos "nacdd", "nacmm", "nacaaaa". dia de nacimiento, mes y año respectivamente... (formato: dd mm aaaa)

El problema que se me presenta es que necesito buscar por Cumpleaños y por Rango de edad..

Para cumpleaños podria hacer esto..
Código PHP:
SELECT FROM usuarios WHERE nacdd 10 AND nacmm 04 
Pero para buscar por rango de fechas, no se como hacer.. es decir, si la fecha fuera una sola columna(por ejemplo fecha_total) podria hacer esto

Código PHP:
SELECT FROM usuarios WHERE fecha_total BETWEEN '10-04-1980' AND '10-04-1999' 
pero estando separados los datos no se como hacer..

¿Alguna sugerencia de como hacerlo sin tener que crear otra columna?

Gracias
  #2 (permalink)  
Antiguo 11/04/2010, 08:53
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: problema con fechas

Quizá la funciòn CONCAT te pueda ayudar.

No sé si puedas especificar el caracter de concatenación, pero podrías probar sin el guión .

Nos vemos.

EDIT : Si hubiera leído mejor el manual, me habría dado cuenta que existe una forma derivada de CONCAT, que se llama CONCAT_WS. Esta te permite especificar el separador.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 11/04/2010, 09:01
 
Fecha de Ingreso: febrero-2009
Ubicación: Cordoba - Argentina
Mensajes: 22
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema con fechas

Como haria para comparar las fechas de los inputs con el resultado de la concatenacion?




Gracias
  #4 (permalink)  
Antiguo 11/04/2010, 09:11
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: problema con fechas

Creo que las funciones que te di, no son la solución. Ya que quieres concatenar los campos, no los valores a comparar, ya que eso lo puedes hacer a mano :/...

Pero, a ver...

Prueba lo siguiente...

Código MySQL:
Ver original
  1. SELECT * FROM usuarios WHERE CONCAT_WS('-', nacdd,nacmm,nacaaa) BETWEEN '10-04-1980' AND '10-04-1999'

No creo que funcione, pero no se me ocurre nada más. Yo creo que esto debería ir en MySQL... allá están los expertos en BD, y el tema debería ir allí por tratar solo MySQL
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 11/04/2010, 09:14
 
Fecha de Ingreso: febrero-2009
Ubicación: Cordoba - Argentina
Mensajes: 22
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema con fechas

Ahora pruebo a ver que tal, gracias por la ayuda..

Le mando un PM a algun moderador para que mueva el tema..


Saludos
  #6 (permalink)  
Antiguo 11/04/2010, 15:13
 
Fecha de Ingreso: febrero-2009
Ubicación: Cordoba - Argentina
Mensajes: 22
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema con fechas

Muchas gracias Spider, el codigo funciona muy bien.. pero el filtro es medio raro..

Código:
SELECT * FROM usuarios WHERE CONCAT_WS('-', nacaaaa,nacmm,nacdd) BETWEEN '1980-12-30' AND '2002-12-10'
Me devolvio 3 resultados esa busqueda..

1981-10-04
1980-09-04
1989-12-12

El unico realmente en rango es el ultimo, los dos primeros son anteriores al rango, otro detalle, dejo afuera del resultado a

2002-05-22

Que si estaria adentro..

Alguna idea?

Saludos

pd: no conozco moderadores.. no pude pedir el cambio :P

EDIT: Me parece que no esta funcionando el codigo y solo filtra por año, es decir no concatena..

Probe usando CONCAT solo sin usar el guion y tambien filtra exclusivamente por año..


Gracias por toda la ayuda
saludos

Última edición por ChakyCba; 11/04/2010 a las 15:19
  #7 (permalink)  
Antiguo 11/04/2010, 17:24
Avatar de richicasas  
Fecha de Ingreso: abril-2007
Ubicación: Colombia
Mensajes: 692
Antigüedad: 17 años, 1 mes
Puntos: 13
De acuerdo Respuesta: problema con fechas

y porque mejor, no cambias la estructura de tu BD, y en vez de tener tres campos para la fecha de nacimiento , creas un solo campo llamado fechanacimiento y de tipo DATE. Te seria mas facil sacar tus consultas.
Si en el formulario tienes tres campos dia, mes y año puedes guardarlos asi.
Código PHP:
$fecha $_POST['anio']."-".$_POST['mes']."-"$_POST[dia'']; 
Es una sugerencia.
__________________
Juguetes Sexuales
  #8 (permalink)  
Antiguo 11/04/2010, 17:34
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: problema con fechas

¿Has probado con la misma consulta, pero sin guiones? Para que sean tratados como números, no como cadenas.

Código MySQL:
Ver original
  1. SELECT * FROM usuarios WHERE CONCAT_WS('', nacaaaa,nacmm,nacdd) BETWEEN '19801230' AND '20021210'
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: fechas
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 19:13.