Foros del Web » Programando para Internet » PHP »

Insertar un valor fecha

Estas en el tema de Insertar un valor fecha en el foro de PHP en Foros del Web. Siempre tengo problemas con las fechas en php. No reniego de php sino de mi pero me gustaria poder implementar funciones qeu me ahorren dolores ...
  #1 (permalink)  
Antiguo 13/07/2004, 11:46
 
Fecha de Ingreso: diciembre-2002
Mensajes: 472
Antigüedad: 15 años
Puntos: 0
Pregunta Insertar un valor fecha

Siempre tengo problemas con las fechas en php. No reniego de php sino de mi pero me gustaria poder implementar funciones qeu me ahorren dolores de cabeza.Ahora por ejemplo ingreso una fecha en formato mm-dd-yyyy y al hacer el insert (en un campo date de mysql) nunca me pasa bien el valor.Que puedo hacer?
saludos
  #2 (permalink)  
Antiguo 13/07/2004, 12:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te comento:
Mysql tiene sus própios tipos de datos (campos) para trabajar con fechas .. segúro que ya usaras campos tipo DATE o DATETIME

Estos campos internamente Msyql los almacena en un formato standar (ODBC o ANSI no secuantos ..) que es el que tanto te "molesta": yyyy-mm-dd hh:mm:ss (la hora si es un DATETIME)

Por tanto .. así deberas generar tus fechas si las introduces "manualmente" a la BD en tus "INSERT/UPDATE" independientemtne de como los escribas en tus "input" de tus formularios o donde captures ese datos.. SIEMPRE tendras que componer ese formato fijo a la hora de guardarlo en tu BD (hacer el INSERT/UPADATE). Lo mismo es aplicable a un "SELECT" en función de ese valor.

En PHP puedes "manejar" una cadena de ese tipo concatenando y usando si corresponde la función explode() para "partir" una cadena por determinado caracter (tu separador de fechas que uses "-" por ejemplo).

Una vez que tienes tu fecha en la BD (mysql) con su formato correcto .. a la hora de representar ese dato (consulta SQL) tienes que usar MAS SQL .. concretamente: DATE_FORMAT() de Mysql (función) para darle el formato de salida de la fecha al que necesites y como gustes (es equivalente en cierta forma al date() de PHP.

Todo lo que puedas hacer desde SQL (tratamiento de fechas .. etc) será siempre más óptimo que hacerlo con "funciones php" cuando es un proceso que es para que lo realice la BD con su própio LENGUAJE de Consultas que es el "S.Q.L." y.. que al igual que aprendemos PHP .. si usamos Base de datos debemos aprenderlo (el que corresponda al que usas: Mysql en tu caso).

Te recomiendo los tutoriales de SQL de:
www.mysql-hispano.com
Y el manual oficial de Mysql donde veras su SQL particular:
www.mysql.com

Un saludo,
  #3 (permalink)  
Antiguo 16/07/2004, 10:44
 
Fecha de Ingreso: diciembre-2002
Mensajes: 472
Antigüedad: 15 años
Puntos: 0
Siempre completas tus explicaciones! Eres un genio, Cluster! Gracias!
Voy a ver entonces si partiendo del dato "yyyy-mm-dd" (en realidad me lo ingresan con la barra / ) le agrego el string "00:00:00" de hora. Asi andaria,no?
Bueno, un saludo
Tico
  #4 (permalink)  
Antiguo 16/07/2004, 10:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si, .. si trabajas con campos DATETIME que guardan la fecha + hora .. tendras que componer esa "cadena" con ese formato (que es el que maneja Mysql) independiente del formato de entrada que recibas (ya te comenté el tema de usar explode() ...).

Pero, también podrías usar campos DATE (sólo guarda fecha sin hora) si realmente la hora no la llegas a necesitar para nada, así ahorras espacio en tus BD y no te complicas con añadir la cadena "00:00:00" siempre.

Un saludo,
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 07:54.