Foros del Web » Programando para Internet » PHP »

converitir un campo varchar a date

Estas en el tema de converitir un campo varchar a date en el foro de PHP en Foros del Web. hola me pueden ayudar con esto, tengo una tabla donde guardo fecha pero ese campo es de tipo varchar y yo quiero ordenar ese campo ...
  #1 (permalink)  
Antiguo 22/09/2006, 08:24
 
Fecha de Ingreso: diciembre-2005
Mensajes: 74
Antigüedad: 14 años
Puntos: 0
converitir un campo varchar a date

hola me pueden ayudar con esto, tengo una tabla donde guardo fecha pero
ese campo es de tipo varchar y yo quiero ordenar ese campo ya que necesito mostrar ordenada un reporte pero como es de tipo varchar me oredena por los dias asi
02/05/2006
04/05/2006
05/07/2006
09/05/2006
y quiero se ordene
02/05/2006
04/05/2006
09/05/2006
05/07/2006
  #2 (permalink)  
Antiguo 22/09/2006, 09:29
Avatar de devildriver  
Fecha de Ingreso: julio-2006
Mensajes: 118
Antigüedad: 13 años, 4 meses
Puntos: 0
Amigo por que no lo cambias en la tabla a DATE! Ajuro tiene que ser varchar?
  #3 (permalink)  
Antiguo 22/09/2006, 09:39
 
Fecha de Ingreso: diciembre-2005
Mensajes: 74
Antigüedad: 14 años
Puntos: 0
ya lo cambia a date y al hecer el proceso de subir ese campo fecha de tipo date se pone unos numeros por ejemplo 0512002 y de ahi como hago para que se muestre bien la fecha 04/05/2006
  #4 (permalink)  
Antiguo 22/09/2006, 09:47
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 13 años, 6 meses
Puntos: 6
De acuerdo ahi dos maneras...

yo tbm las trabajo asi pero no las transformo a date... las manipulo como numeros...
si te das cuenta si unes AÑOS-MESES-DIAS en ese orden formas un numero entero que puedes comparar con facilidad ... ejemplo

fecha uno 2006-12-31 = 20061231

fecha dos 2006-11-20 = 20061120

si generas una resta o ver el mayor podrias identificar cual fecha es de referencia mas antigua que otra ej:
Código:
  if (20061231 > 20061120 ) { print("fecha uno es mas cercna a fin de año  que fecha dos");}
esto lo realizas con la funcion de javascript "substring"

ej:
Código:
var obtener_fecha = document.forms.frmdatos.txtfecha.value

transformando_fecha_a_numeros_enteros = parseFloat (obtener_fecha .substring(6, 10)+ obtener_fecha.substring(3, 5) + obtener_fecha.substring(0, 2));
asi rescato la fecha y la dejo como numero entero en un variable en javascript, esto sirve para comparacion y lo validaciones varias...... para unir nada mas pones + en javascript.

es base datos existe una funcion parecida.. que en realidad genera la misma opcion, asi podras ordenar por lo que desees respecto a los campos de la fecha.

pondre mi cogido para que lo veas...
la sintaxis es la siguiente

Código:
$strsql = "SELECT min_codigo, min_fecha_inicio, min_fecha_termino FROM int_minuta ";
						$strsql.= " WHERE ".$intfecha_termino." >= CONCAT(SUBSTRING(min_fecha_inicio,7,4), SUBSTRING(min_fecha_inicio,4,2), SUBSTRING(min_fecha_inicio,1,2))";
						$strsql.= " AND ".$intfecha_termino." <= CONCAT(SUBSTRING(min_fecha_termino,7,4), SUBSTRING(min_fecha_termino,4,2), SUBSTRING(min_fecha_termino,1,2))";
lo que hago ... mando una variable con la fecha ya cambiada a enteros.. luegos consulto en la base datos si es mayor o igual a un campo fecha que poseeo en mi tabla, ahi aplico la funcion SUBSTRING para selecionar de igual manera que con el javascript asi comparo dos numeros enteros como te explicaba. y con el CONCAT conkateno la consulta de valores para que sea igual en el oreden de la variable que estamos mandado del javascript.. recerda que es asi 20061231 yymmdd

espero te sirva de algo, una idea de como trabajar con eso... sino existe una funcion para cambiar valores en sql.. creo que es TO_CHAR o sino TO_DATE
investiga al respecto

Saludos,
__________________
sEIK! -Chile-
Analista Programador.
  #5 (permalink)  
Antiguo 22/09/2006, 09:56
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 13 años, 6 meses
Puntos: 6
para ordenar ..

ORDER BY SUBSTRING(fecha,1,2) ASC";


deberia funcionar para el dia
__________________
sEIK! -Chile-
Analista Programador.
  #6 (permalink)  
Antiguo 22/09/2006, 10:23
 
Fecha de Ingreso: diciembre-2005
Mensajes: 74
Antigüedad: 14 años
Puntos: 0
pero en el campo esta 02/05/2006(varchar) es decir asi me sube el dato al hacer el proceso
  #7 (permalink)  
Antiguo 22/09/2006, 10:28
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 13 años, 6 meses
Puntos: 6
de acuerdo...

pero mira , lo que propuse genera en realidad que solo recorre un varchar si asi lo quieres y trae los fracmentos del mismo que tu indiques ...
en este caso traemos del varchar (31/12/2006) traemos con la funcion SUBSTRING(fecha,1,2) solo los numeros, dejando de lado los "/" slash los unimos y lo guardamos en una variable o bien preguntas por sql que trabaje solo con lo indica el SUBSTRING asi determinas que trabnaje solo con los numeros o los caracteres que quieras del campo

Saludos,
__________________
sEIK! -Chile-
Analista Programador.
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:42.