2010-10-05 26 views
10

Me gustaría almacenar una cantidad de tiempo para algo en una base de datos mysql, por el tiempo que tomó algo, como 2 horas, 5 minutos, 10 segundos. se prefiere la precisión hasta el segundo, pero no es obligatorio. ¿Cuál es la mejor manera de hacer esto?¿La mejor manera de almacenar span a tiempo en una base de datos MySQL?

+2

El propósito puede hacer una diferencia aquí; Si almacenar un número entero de segundos es adecuado para usted, ese puede ser el camino a seguir. No he revisado la documentación de mysql por un tiempo, pero no recuerdo que mysql tenga un tipo de datos de intervalo de tiempo. – Andrew

+2

No conozco los detalles de MySQL, pero en mi experiencia, si todo lo que necesita es "a la segunda" precisión, entonces el almacenamiento de TotalSeconds tiene más sentido. En general, es mucho más fácil analizar ese valor en un formato de tiempo dado, en lugar de tener que analizar un código, por ejemplo, una cadena como "00:00:00" a un formato intermedio. –

+0

buen punto @Andrew. Iba a ir con el tipo de TIEMPO después de mirar algunas de las respuestas, pero después de pensar en cómo se implementará en la aplicación, el entero w/segundos tiene más sentido (mucha matemática/comparación con tiempos). – GSto

Respuesta

16

Un tipo MySQL TIME puede almacenar intervalos de tiempo de '-838: 59: 59' a '838: 59: 59' - si eso está dentro de su rango requerido, y sería útil tener MySQL presente de forma nativa estos tramos en HH: MM: SS formulario, luego usar eso.

De lo contrario, me gustaría ir con un tipo de número entero para representar el número de segundos.

3

Me gusta almacenar cosas en la base de datos como unidades base. De esa manera, puedo convertir de manera confiable y precisa a cualquier otra cosa que quiera más adelante.

Lo único que tiene que preocuparse con este método es bajar su precisión. Si está almacenando la distancia recorrida para viajes de travesía, las pulgadas o centímetros pueden no ser lo que está buscando.

En su caso, almacenaría el lapso en segundos o milisegundos e iré desde allí.

1

Como dice Andrew, un campo entero con segundos ya podría hacerlo.

Si los datos están disponibles, y tiene sentido almacenarlos, guardaría los datos en dos marcas de tiempo mySQL con las horas de inicio y finalización (también posibles para la auditoría posterior), y use DATE_DIFF() para buscar la duración real .

Cuestiones relacionadas