Saltar al contenido

Marca de tiempo con una precisión de milisegundos: cómo guardarlos en MySQL

Solución:

Debe tener la versión 5.6.4 de MySQL o posterior para declarar columnas con tipos de datos de una fracción de segundo. ¿No estás seguro de tener la versión correcta? Tratar SELECT NOW(3). Si recibe un error, no tiene la versión correcta.

Por ejemplo, DATETIME(3) le dará una resolución de milisegundos en sus marcas de tiempo, y TIMESTAMP(6) le dará una resolución de microsegundos en una marca de tiempo de estilo * nix.

Lea esto: https://dev.mysql.com/doc/refman/8.0/en/fractional-seconds.html

NOW(3) le dará la hora actual del sistema operativo de su servidor MySQL con precisión de milisegundos.

Si tiene varios milisegundos desde la época de Unix, intente esto para obtener un valor DATETIME (3)

FROM_UNIXTIME(ms * 0.001)

Las marcas de tiempo de Javascript, por ejemplo, se representan en milisegundos desde la época de Unix.

(Observe que la aritmética fraccionaria interna de MySQL, como * 0.001, siempre se maneja como punto flotante de doble precisión IEEE754, por lo que es poco probable que pierda precisión antes de que el Sol se convierta en una estrella enana blanca).

Si está utilizando una versión anterior de MySQL y necesita una precisión de tiempo inferior a un segundo, su mejor camino es actualizar. Cualquier otra cosa te obligará a hacer soluciones complicadas.

Si, por alguna razón, no puede actualizar, podría considerar usar BIGINT o DOUBLE columnas para almacenar marcas de tiempo de Javascript como si fueran números. FROM_UNIXTIME(col * 0.001) seguirá funcionando bien. Si necesita la hora actual para almacenar en dicha columna, puede usar UNIX_TIMESTAMP() * 1000

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *