Solo una pregunta rápida sobre el almacenamiento del "tiempo" en una base de datos. Estoy registrando el tiempo de ejecución de los usuarios en el formato 00: 00: 00: 00 (horas, minutos, segundos, milisegundos).
Originalmente lo iba a almacenar, TIME
pero luego me di cuenta de que MySQL no admite milisegundos en este tipo.
Estaré almacenando el tiempo real tomado del cronómetro de los usuarios, no el tiempo en que corrieron y terminaron (esto se calculará antes de ser insertado).
¿Cuál sería el mejor tipo de campo para usar? Estaba pensando en double
o float
, pero no estoy seguro de que funcionaría.
fuente
interval
tipo de datos SQL estándar para este propósito. Pero no todos los DBMS (y definitivamente no MySQL) lo admiten.Depende de cuánto tiempo quieras medir. Si no va a grabar más de 2 ^ 32, o 4294967296 ms, un int sin signo normal está bien. Eso corresponde a unos 50 días de reloj, por cierto.
Si estaba almacenando marcas de tiempo Unix o intervalos más grandes, mire usando bigint. Esto le da 8 bytes de espacio, o la capacidad de registrar tiempos tan largos como 1.84467440737096e + 19 ms (que es aproximadamente 500 millones de años)
fuente
Si utiliza MySQL 5.6.4 o posterior, puede utilizar el
TIME(3)
,DATETIME(3)
yTIMESTAMP(3)
los tipos de columnas para almacenar hasta 6 dígitos fraccionarios (reemplaza3
con el número de dígitos fraccionarios que necesita). La parte fraccional se agrega a la cadena de tiempo después del punto; ejemplo:2018-09-08 17:51:04.781
.Referencia oficial
fuente