Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/09/2010, 16:05
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Como manejar fechas[practicas]

Hola,

Los campos que te permiten almacenar fechas y horas en la base de datos son bien específicos, cambiar su funcionamiento no es adecuado, como por ejemplo crear campos char ni int para guardar fechas, ni tampoco depender de algunas de las funciones de la base de datos, por el mismo tema de escalabilidad.

El ejemplo mas claro lo obtienes cuando piensas en cambiar el idioma de una aplicación y volverla internacional.

En resúmen, usa campos date, time o datetime en la base de datos que estés usando, y busca el campo que se adecue específicamente al tipo de fecha que vas a utilizar, como por ejemplo en SQL Server tienes smalldatetime.

Si necesitas dar formato o mostrar una fecha, usa el lenguaje de programación, no solo tiene mas funciones sino que te permite cambiar de formato simplemente con cambiar el lenguaje del sistema en general.

Usa las funciones de i18n que provee el lenguaje de programación que estés usando, es decir, no es lo mismo insertar una fecha 31/01/2010 que 01.31.2010. La base de datos espera una fecha sin especificar el lenguaje, es decir 20100131 para el 31 de enero del 2010. Si usas un formato demasiado específico vas a tener que cambiar todas las querys, funciones y stored procedures de la base de datos; mientras que eso lo debería hacer el lenguaje automáticamente.

Es mucho mas eficiente para la base de datos hacer cálculos con campos date que con un campo tuyo personalizado en formato int con un unix time stamp. Por ejemplo puedes tener una consulta por años, que de otra forma sería muy difícil de implementar:

select year(fecha), avg(salario) from table group by year(fecha)

Saludos,

ps:

El formato de notación Unix time solo te permite tener fechas desde el 1 de Enero de 1970.