Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Campo de Fecha...

Estas en el tema de Campo de Fecha... en el foro de Mysql en Foros del Web. saludos, Tengo el siguiente formato de fecha en mi PHP: $date = date("D M j G:i:s T Y"); Pero en la base de datos MySQL ...
  #1 (permalink)  
Antiguo 01/08/2008, 02:04
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 8 meses
Puntos: 5
Campo de Fecha...

saludos,

Tengo el siguiente formato de fecha en mi PHP:

$date = date("D M j G:i:s T Y");

Pero en la base de datos MySQL tenngo un VARCHAR. Por su puesto, en el momento de solicitar una salida de datos por fecha ascendente o descendente no me lo capta.

Para que mis fechas se guarden con ese tipo de formato (Thu Jul 25 10:30:58 CEST 2008) qué tipo de campo debo configurar en mi MySQL?

Gracias por la ayuda.

Saludos!
__________________
Andrew :P
  #2 (permalink)  
Antiguo 01/08/2008, 03:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Campo de Fecha...

Yo te diría que por qué guardar un formato de salida como ese, cuando tú puedes generarlo desde un dato guardado en datetime. Tú quieres guardar lo que deseas mostrar, pero eso no es lo adecuado. Yo guardaría como campo DATETIME, pero lo cargaría así desde PHP, sólo con año-mes-día hora:minutos:segundos. No te pongo el código porque es simple y en esta sección no gusta el código que no sea SQL. Luego puedes mostrar lo que quieres mediante las funciones de fecha hora de MySQL y, además, podrás ordenar por fecha, consultar por rangos de fecha, etc.: creo que es lo suyo. No sé si alguno de esos datos que te estás cargando en un VARCHAR no podrás sacarlo con las funciones de fecha hora de MySQL, pero me extrañaría que así fuese. Por otra parte, si algo no pudiera ser mostrado mediante las funciones de fecha hora de MySQL, siempre podrías coger el datetime y trabajar de nuevo con PHP para mostrarlo a tu gusto, aunque, como te digo, no creo que sea necesario. De lo que sí estoy seguro es de que guardar este tipo de datos en un campo tipo VARCHAR no es una buena idea.

Última edición por jurena; 01/08/2008 a las 11:17
  #3 (permalink)  
Antiguo 01/08/2008, 05:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Campo de Fecha...

Totalmente de acuerdo con jurena en cuanto a la forma de guardar la fecha. El problema que estás planteando no se resuelve por el almacenamiento sino por la representación, y para ello MySQL tiene funciones para ello y modos de almacenamiento específico.
El mejor formato posible es el DATETIME, porque ese tipo de campo contiene toda la información necesaria para generar el string que estas requiriendo, simplemente debes considerar la configuración de zonas horarias y las funciones de conversión y representación de fechas.
Mira el manual de referencia:
- 5.9.8. Soporte de zonas horarias en el servidor MySQL
- 12.5. Funciones de fecha y hora
En este último caso presta atención a las funciones UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP(), CURRENT_TIMESTAMP(), CURRENT_TIME(), CURRENT_DATE(), y FROM_UNIXTIME() , CONVERT_TZ(), y en cuanto al string que necesitas, especial atención a DATE_FORMAT().

Nunca te olvides que cada problema que puedas tener, ya alguien lo tuvo y seguramente los motores de bases de datos ya lo resolvieron. Simplemente hay que leer con atención el manual para encontrar donde está descripta la solución.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 01/08/2008, 11:12
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Campo de Fecha...

Gracias por vuestras respuestas!
__________________
Andrew :P
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 14:39.