Foros del Web » Programando para Internet » PHP »

comparacion de fechas en campos tipo varchar

Estas en el tema de comparacion de fechas en campos tipo varchar en el foro de PHP en Foros del Web. Estoy haciendo un mini gestor de consultas en sql, para que mis usuarios, puedan hacer algunas consultas sobre las bbdd de la web, pero al ...
  #1 (permalink)  
Antiguo 02/06/2004, 06:25
 
Fecha de Ingreso: diciembre-2003
Mensajes: 222
Antigüedad: 14 años
Puntos: 2
comparacion de fechas en campos tipo varchar

Estoy haciendo un mini gestor de consultas en sql, para que mis usuarios, puedan hacer algunas consultas sobre las bbdd de la web, pero al llegar al tema de las fechas me he encontrado con un pequeño problema....

Tengo algunas fechas que son de tipo date, y con esas guay. Pero hay un campo, que no puedo cambiar... Que es de tipo Varchar y las fechas que contiene son de este tipo: dd/mm/aaaa. Alguna idea de como puedo hacerlo para manipularlo como fechas???para hacer consultas del tipo: "entre fecha1 y fecha2 " teniendo encuenta de que es un tipo texto?????


Muchas gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 02/06/2004, 06:52
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 14 años, 5 meses
Puntos: 0
Hola Paranoid, hace algun tiempo yo tuve un problema similar y lo que hice fue cortar las cadenas de las fechas y desglosarlas por partes en arrays, me explico;
existe una función en php que es explode que lo que hace es cortarte una cadena por donde tu digas y lo mete en arrays para luego poderlo utilizar, un ejemplo sencillo:

$Fecha=explode ("21/02/1999","/");

Así, sabrás que $Fecha[0] tiene 21, $Fecha[1] tiene 02 y $Fecha[2] tiene 1999.

Espero, que te halla servido esto para algo, a mi me fue muy útil.
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #3 (permalink)  
Antiguo 02/06/2004, 08:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm y no puedes cambiar ese tipo de dato a un DATE ? (cambiando el formato de esa fecha al standard de DATE ...?) (la conversión de ese dato se puede automatizar hasta en una sóla sentencia SQL)

Creo que sería lo más sano y más optimo para tu aplicación ..

Si no es así .. puedes usar SQL para componer fechas (al igual que PHP tiene su mktime() .. Mysql tiene su equivalente) .. compones las fechas según las partes de tu fecha (de ese campo VARCHAR) y aplicas las funciones de fechas y afines que ya usas ... Como veras .. un costo extra de proceso para una cosa que al parecer siempre se va a trabajar así (salvo que otra aplicación siga introduciendo datos en ese formato própio y no se pueda cambiar el formato de salida que entrega a Mysql esa "otra" aplicación).

Un saludo,
  #4 (permalink)  
Antiguo 09/06/2004, 04:00
 
Fecha de Ingreso: diciembre-2003
Mensajes: 32
Antigüedad: 14 años
Puntos: 0
Cita:
Iniciado por Enea
Hola Paranoid, hace algun tiempo yo tuve un problema similar y lo que hice fue cortar las cadenas de las fechas y desglosarlas por partes en arrays, me explico;
existe una función en php que es explode que lo que hace es cortarte una cadena por donde tu digas y lo mete en arrays para luego poderlo utilizar, un ejemplo sencillo:

$Fecha=explode ("21/02/1999","/");

Así, sabrás que $Fecha[0] tiene 21, $Fecha[1] tiene 02 y $Fecha[2] tiene 1999.

Espero, que te halla servido esto para algo, a mi me fue muy útil.
una pequeña corrección, es:
Código PHP:
$Fecha=explode ("/","21/02/1999"); 
tenias las variables de la función al revés :)
  #5 (permalink)  
Antiguo 09/06/2004, 05:00
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Puedes incluir en la clausula where algo parecido a esto:

BETWEEN TO_DAYS(CONCAT_WS('-',RIGHT(fecha,4),SUBSTRING(fecha,4,2),LEFT(fecha,2 ))) AND TO_DAYS('2004','04','03')

donde fecha es el campo fecha de tu base de datos.
__________________
¿Te apasiona el mundo del guión? El portal del guión
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 01:13.