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

formato para almacenar fecha

Estas en el tema de formato para almacenar fecha en el foro de Mysql en Foros del Web. Hola, estamos creando una aplicación que va a trabajar mucho con fechas y horas. Siempre que guardemos una fecha/hora en MySQL primero lo pasaremos a ...
  #1 (permalink)  
Antiguo 08/03/2011, 10:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 53
Antigüedad: 13 años, 2 meses
Puntos: 2
formato para almacenar fecha

Hola, estamos creando una aplicación que va a trabajar mucho con fechas y horas. Siempre que guardemos una fecha/hora en MySQL primero lo pasaremos a una variable $fecha_leida y lo compararemos con $fecha_actual.

Tengo entendido que lo suyo será hacer:
Código PHP:
Ver original
  1. $fecha = time();

Y que $fecha nos dará el nº de segundos transcurridos desde no sé cuándo.

Mis preguntas:
  • ¿En qué formato guardar la fecha/hora en MySQL?
  • ¿Cómo leer $fecha_leida?
  • ¿Cómo guardar la fecha a partir de
    Código PHP:
    Ver original
    1. $fecha_a_guardar = time()
    ?
¡Mil gracias!
  #2 (permalink)  
Antiguo 08/03/2011, 11:39
Avatar de LordJhony  
Fecha de Ingreso: septiembre-2010
Mensajes: 472
Antigüedad: 13 años, 8 meses
Puntos: 24
Respuesta: formato para almacenar fecha

Primero debes definir el campo que va almacenar los datos tipo fecha como date.
Y para guardar el registro en tu tabla lo haces con una sentencia SQL.
Por ejemplo:
Código MySQL:
Ver original
  1. insert into tabla(Campo)values('Variable');
Donde campo es donde vas almacenar tu informacion, y variable la variable de tu codigo php que contiene dicha informacion.
  #3 (permalink)  
Antiguo 15/03/2011, 13:21
 
Fecha de Ingreso: febrero-2011
Mensajes: 53
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: formato para almacenar fecha

A ver... Por lo que he leído, la mejor opción es guardar la fecha como un entero, un campo int, que es como realmente PHP maneja las fechas.

¿Aporta algo guardarlo como date o datetime o algún campo especial de estos?
  #4 (permalink)  
Antiguo 15/03/2011, 13:23
Avatar de grails  
Fecha de Ingreso: febrero-2011
Mensajes: 44
Antigüedad: 13 años, 2 meses
Puntos: 6
Respuesta: formato para almacenar fecha

html5 el problema que vas a tener cuando lo guardas como entero, es que si tienes que comparar esos campos con una fecha en concreta por ejemplo, tendrás que convertir el entero en fecha en la consulta mysql
  #5 (permalink)  
Antiguo 15/03/2011, 13:24
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: formato para almacenar fecha

Facilita las consultas.
Respecto a guardarlo como INT, eso implica guardarlo como UNIX_TIME en la mayoría de los casos, pero no produce ventajas especiales. De hecho un DATETIME desde el punto de vista de estructuras de almacenamiento se guarda como un DOUBLE (8 bytes).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 15/03/2011, 17:50
 
Fecha de Ingreso: febrero-2011
Mensajes: 53
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: formato para almacenar fecha

Cita:
Iniciado por grails Ver Mensaje
html5 el problema que vas a tener cuando lo guardas como entero, es que si tienes que comparar esos campos con una fecha en concreta por ejemplo, tendrás que convertir el entero en fecha en la consulta mysql
Pero si en la base de datos está la fecha y yo la leo:
Código PHP:
$fecha_leida 
Y tengo la fecha que quiero utilizar:
Código PHP:
$fecha_a_comparar 
que por ejemplo podría ser la fecha actual:
Código PHP:
$fecha_a_comparar time() 
La comparación es sumamente sencilla:
Código PHP:
if( $fecha_leida $fecha_a_comparar )
... 
Si se me escapa algo y me lo hacéis ver os lo agradezco.

Cita:
Iniciado por gnzsoloyo
Facilita las consultas.
Respecto a guardarlo como INT, eso implica guardarlo como UNIX_TIME en la mayoría de los casos, pero no produce ventajas especiales. De hecho un DATETIME desde el punto de vista de estructuras de almacenamiento se guarda como un DOUBLE (8 bytes).
No sé qué consultas facilita... Ya sé que en la BD no voy a poder visualizar la fecha directamente, pero es que siempre la voy a leer con PHP para tratarla o visualizarla con formato.

Y lo de UNIX_TIME y demás... tampoco me aclara nada, no sé qué me quieres decir xD
  #7 (permalink)  
Antiguo 15/03/2011, 18:15
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: formato para almacenar fecha

Cita:
No sé qué consultas facilita... Ya sé que en la BD no voy a poder visualizar la fecha directamente, pero es que siempre la voy a leer con PHP para tratarla o visualizarla con formato.
Ajá... ¿Y de dónde obtiene el dato el PHP?
El hecho que lo proceses en PHP no implica que no debas usar SQL para obtener los datos desde una base de datos. ¿No crees?
Cita:
Y lo de UNIX_TIME y demás... tampoco me aclara nada, no sé qué me quieres decir xD
Es un sistema de descripcion de tiempo usado en sistemas de bases de datos en la Web. De hecho, es muy habitual encontrar tablas en bases de la web donde las columnas de fecha son en realidad representaciones de enteros referidos a UNIXTIME.
En el caso de MySQL, cuando se usa esta forma de almacenar la fecha se deben usar funciones especiales para recuperar la fecha en su forma real, o bien para obtenerla como entero UNIXTIME.

Respecto a las cosas que facilita el tener la fecha en una columna DATE o DATETIME, eso depende del contexto en que se usa. No hay un modelo específico para mostrar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: almacenar, formato, 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 00:16.