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: 17 años, 7 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: 22 años, 9 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: 17 años, 7 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: 22 años, 9 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: 17 años, 7 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: 17 años, 7 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: 19 años, 6 meses
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: 22 años, 9 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 17:24.