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

Fechas en mysql (y php)

Estas en el tema de Fechas en mysql (y php) en el foro de Mysql en Foros del Web. Hola hola, tengo uan duda, epsoer peudan ayudarme y de paso a alguno otro le servira. Normalmente guardo yo registros en mi BD de fechas ...
  #1 (permalink)  
Antiguo 02/03/2011, 14:45
 
Fecha de Ingreso: febrero-2008
Mensajes: 56
Antigüedad: 16 años, 2 meses
Puntos: 1
Fechas en mysql (y php)

Hola hola, tengo uan duda, epsoer peudan ayudarme y de paso a alguno otro le servira.

Normalmente guardo yo registros en mi BD de fechas en campos de tipo INT, guardando el entero correspondiente a la fecha obtenido con la funcion time() de PHP (te da el tiempo en unix timestamp)

La verdad es que a mi se me ha hehco una buena practica, ya que al momento de modificar el campo es muy muy simple, al momento de comprar fecha y hora, es muy muy simple tanto como 5<6... y al momento de mostrarlas tambien lo es convirtiene el entereo a su fehca respectiba mediante php y la funcion date('Y-m-d',$entero)


Pero es o no una buena practica??
En caso de que si, sera mejor INT o BIGINT??
En caso de que no, que tipo de campo seria el mejor (tomando en cuenta que quireo tener la fecha y hora)


Se que existen otros campos mas especificos como DATETIME o otros en mysql
Estube leyendo pero encontre lugares donde dicen que es buena practica y otros donde dicen que no

Espero me peudan ayudar, y muchas gracias!
suerte!
  #2 (permalink)  
Antiguo 02/03/2011, 15:23
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, 4 meses
Puntos: 2658
Respuesta: Fechas en mysql (y php)

A nivel de programación, usar campos numéricos puede parecer una buena práctica. Pero a nivel de bases de datos es una pésima práctica. No sólo es porque usar campos numéricos para valores tan pequeños termina siendo un desperdicio de espacio (usando INT para cada parte puedes usar hasta tres veces más espacio), sino que además complica enormemente las consultas y procesamiento de fechas.
Eso es un invento de los programadores o desconocedores de BBDD. Para decirlo en pocas palabras: SI hace más de tres décadas que se implementaron los modelos de datos como tipos DATE, TIME y DATETIME, y los usan todos los DBMS, en todas las bases de datos más poderosas y grandes que puedas imaginar ¿no te parece que deben forzosamente tener ventajas intrísecas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/03/2011, 15:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 56
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Fechas en mysql (y php)

Te entiendo... posiblemente estes en lo correcto...

Entonces cual tipo d campo sera el mejor para manejar las fechas, recordando que la idea es manejar Fecha y hora (27/03/1989 14:52:02) (es un ejemplo guardar hasta segundos.. da igual el formato en que se guarde)

Ademas son facilmente editables estos campos? (hacer un update a una fecha)

Otra cosa aprovechando...
con time() de php obtiens la hora del servidor...
Cual seria la manera ideal de obtener la fecha, para luego guardarla en la BD

Gracias

Última edición por Zhampy; 02/03/2011 a las 16:19
  #4 (permalink)  
Antiguo 02/03/2011, 16:27
 
Fecha de Ingreso: marzo-2010
Mensajes: 68
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Fechas en mysql (y php)

obten la fecha de mysql

SELECT CURRENT_DATE;

desde php puedes hacer esta consulta a mysql como cualquier otra la respuesta la procesas com fetch_row o array o lo que sea que te guste mas y listo!!

para la hora es SELECT CURRENT_TIME;


SELECT NOW(); TE TRAE LA FECHA Y HORA JUNTOS

Última edición por xziolhvinvhgl; 02/03/2011 a las 16:28 Razón: adjunto
  #5 (permalink)  
Antiguo 02/03/2011, 16:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 56
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Fechas en mysql (y php)

Gracias (no pude escribir tu nombre =P)...
entonces solo queda saber que tipo de campo utilizar... para guardar la fecha y hora

uso un DATETIME??
Gracias
  #6 (permalink)  
Antiguo 02/03/2011, 17:29
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, 4 meses
Puntos: 2658
Respuesta: Fechas en mysql (y php)

Usa DATETIME o TIMESTAMP. Con los dos obtendrás ese resultado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 02/03/2011, 19:30
 
Fecha de Ingreso: marzo-2010
Mensajes: 68
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Fechas en mysql (y php)

yo los uso por separado!!... DATE para la fecha, y TIME para la hora
  #8 (permalink)  
Antiguo 02/03/2011, 19:35
 
Fecha de Ingreso: febrero-2008
Mensajes: 56
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Fechas en mysql (y php)

Lo digo por que si hay q comparar una fecha exacta (con segundos) por ejemplo para verificar el plazo de 24 horas de alguna cosa... pienso q datetime funcioanra mejor.

Ahora me surge otra duda... (sorry ^^)
Si uso por ejemplo NOW() de mysql para obtener fecha y hora para isnertar en la base de datos, me da uan fecha y hora (digamos fecha de ahora en adelante) distinta a time() de php, quiere decir que toma la fecha pero no es una fecha GMT 0, de donde saca la fecha??? no varia por cada usuario (seria un gran problema)

Q pasa si yo quisiera que la fecha fuera GMT-7????

se complica no?
que se hace entonces en estos casos?

saludos
  #9 (permalink)  
Antiguo 02/03/2011, 20:21
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, 4 meses
Puntos: 2658
Respuesta: Fechas en mysql (y php)

Te estás ahogando en un vaso de agua, y complicando inútilmente con cosas que se resuelven leyendo el manual de referencia.
MySQL, como cualquier otro DBMS cuenta con funciones de fecha, hora y fecha/hora específicamente para manipular y hacer operaciones con ellas. Simplemente debes leer el manual para ver cuál es la que necesitas usar.
Lee el manual: MySQL 5.0 Reference Manual :: 12 Funciones y operadores :: 12.5 Funciones de fecha y hora
Respecto a la hora GMT, ese tema se maneja a nivel servidor: MySQL 5.0 Reference Manual :: 5 Administración de bases de datos :: 5.9 Uso internacional y localización de MySQL :: 5.9.8 Soporte de zonas horarias en el servidor MySQL
Además, debes tener en cuenta esto:
Cita:
En MySQL 5.0, el servidor mantiene varios ajustos de zonas horarias:
* [...]
* [...]
* Zonas horarias por conexión. Cada cliente que se conecta tiene su propio ajuste de zona horaria, otorgado por la variable de sesión time_zone. Inicialmente esta es la misma que la variable global time_zone[...]
Y este detalle:
Cita:
Los valores de timezone pueden darse como cadenas de caracteres indicando una variación con respecto a UTC, como por ejemplo '+10:00' o '-6:00'
En definitiva, las preocupaciones que tienes ya han sido solucionadas y gestionadas hace mucho tiempo, y de diversas formas, en los DBMS. Solamente necesitas aprender a aprovecharlas.
__________________
¿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: fechas, php
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 19:53.