2011-05-06 11 views
19

Tengo que almacenar una duración en una base de datos de SQL Server 2008. ¿Cómo se hace esto usualmente?almacenamiento de duraciones (timespans) en el servidor sql

Por ejemplo I a tener que ser capaz de almacenar valores como: 5 minutos, 8 horas, 10 días, etc.

pensaba para almacenarlo en un campo smalldatetime como mindatetime + intervalo de tiempo. O tal vez como int que representa un desplazamiento a alguna fecha mínima.

¿Alguien tiene alguna experiencia con esto?

+0

posible duplicado de [cuál es la mejor manera de almacenar el intervalo de tiempo en una base de datos del servidor SQL] (http://stackoverflow.com/questions/2397547/what-is-the-best-way-to-store-time -interval-in-a-sql-server-database) – Pekka

Respuesta

18

Si la hora de inicio es significativa (porque se graba un evento, por ejemplo), entonces siempre querrá almacenarla como una fecha para poder leerla más tarde, almacenar la duración posterior simplemente puede ser otra fecha de finalización "finalizada" .

Si su duración arbitraria (duración de la película, etc) Me gustaría simplemente almacenarla como segundos en un entero, a continuación, añadir embellecer el código en la capa de presentación para mostrar como las horas/días etc.

0

Lo que yo haría es tener 2 columnas, una siendo la última vez que se disparó un evento y la otra siendo el tiempo entre los incendios del evento. De esta forma, puede hacer una consulta de dateDiff entre la última vez que se activó y ahora() y ver si ese valor es mayor que la duración entre incendios.

En cuanto al valor de la duración, quiero que sea el valor mínimo de tiempo que necesita. De modo que si tiene un valor mínimo de 5 minutos, la columna debería estar en minutos. si tiene un valor mínimo en segundos, entonces debería estar en segundos.

1

Una palabra de advertencia cuando se utiliza el enfoque con hora de inicio y finalización, cambia el horario de verano. Debe asegurarse de que el tipo de datos de SQL Server que está utilizando sea compatible con la información de la zona horaria. Además, debe asegurarse de que sea compatible con la información histórica de cambio de horario de verano. Por ejemplo, antes de 2007, en las reglas de cambio de horario de verano de los Estados Unidos eran diferentes de lo que son actualmente.

En nuestras bases de datos solo damos un enfoque seguro y almacenamos la hora de inicio, la hora de finalización y la duración en segundos.

Cuestiones relacionadas