Decodificador de marca de tiempo UUID v7

Extrae la marca de tiempo en milisegundos incrustada en los primeros 48 bits de un UUID v7 y conviértela de nuevo a fecha y hora UTC simplemente pegando la cadena. Detecta versiones que no son v7 y anomalías en el variant, y funciona como el inverso de la herramienta hermana "Generador de UUID v7".

Distribución de bits del UUID v7

Rango de bits Campo Descripción
0-47 unix_ts_ms Milisegundos desde la época Unix, almacenados en big-endian. El valor que extrae esta herramienta.
48-51 version El número de versión del UUID. Fijo en 0111 (7 en hexadecimal) para v7.
52-63 rand_a 12 bits de datos aleatorios. Algunas implementaciones los usan para preservar el orden dentro del mismo milisegundo.
64-65 variant Valor fijo 10 que indica el variant de RFC 4122/9562. El primer dígito hexadecimal resulta en 8/9/a/b.
66-127 rand_b 62 bits de datos aleatorios que aportan entropía para evitar colisiones.

Consejos

  • Todo el proceso de decodificación ocurre por completo dentro del JavaScript de tu navegador; el UUID introducido nunca se envía al servidor de toolbase.cc.
  • Si la clave primaria de tu base de datos usa UUID v7, puedes recuperar el momento de creación del registro simplemente pegando la clave aquí, incluso sin una columna created_at dedicada.
  • Introducir un UUID que no sea v7 (como v4) genera una advertencia, pero el valor de referencia extraído mecánicamente de los primeros 48 bits se sigue mostrando, lo cual es útil para aprender en qué se diferencian los formatos.
  • Si necesitas generar un UUID, usa la herramienta hermana "Generador de UUID v7": produce UUID que esta herramienta puede decodificar directamente de vuelta.
  • Pegar aquí uno a uno los valores de UUID v7 encontrados en archivos de registro o respuestas de API es una forma práctica de estimar cuándo ocurrieron los eventos en un sistema externo durante la depuración.

Preguntas frecuentes

UUID v7 está estandarizado en RFC 9562, y una marca de tiempo Unix con precisión de milisegundos se fija en orden big-endian dentro de los primeros 48 de sus 128 bits. Basta con convertir los primeros 12 dígitos hexadecimales en un número e interpretarlo como milisegundos para recuperar el momento de generación.

Como UUID v4 es completamente aleatorio, la "marca de tiempo" extraída de él es un número sin sentido que no guarda relación con ningún momento real de creación. Esta herramienta inspecciona el dígito de versión y muestra una advertencia, pero igualmente muestra el valor extraído mecánicamente de los primeros 48 bits como referencia.

Según la especificación de UUID v7, la precisión es de un milisegundo. Si se generan varios UUID v7 dentro del mismo milisegundo, sus primeros 48 bits son idénticos, y no se puede recuperar su orden de generación; esa distinción queda enteramente en manos de los valores aleatorios rand_a y rand_b.

Los UUID conformes a RFC 4122/9562 exigen que el primer dígito hexadecimal del 4º grupo sea 8, 9, a o b. Si es cualquier otro valor (0-7 o c-f), puede indicar un esquema de generación de ID personalizado o bits corruptos, por lo que se muestra una advertencia.
ツールくん

A propósito — Dotar al UUID de un reloj incorporado

Lo revolucionario de UUID v7 es que el propio identificador conserva permanentemente su momento de generación. Con el antiguo UUID v4, era imprescindible una columna created_at aparte para saber cuándo se creó un registro, pero si la clave primaria de una tabla usa UUID v7, el momento de generación puede recuperarse mecánicamente solo a partir de la cadena del ID. Esta herramienta ofrece ese proceso de recuperación como el inverso de la herramienta hermana "Generador de UUID v7".

Esta propiedad resulta especialmente útil en investigaciones de incidentes y migraciones de datos. Si el ID de un pedido enterrado en un registro antiguo, o un ID de evento recibido de un sistema externo, resulta estar en formato UUID v7, puedes saber al instante aproximadamente cuándo se creó el registro sin consultar una columna de marca de tiempo dedicada. Esto también aplica a sistemas heredados sin columna created_at, o al analizar valores UUID v7 emitidos por otra empresa.

Dicho esto, hay salvedades. Una marca de tiempo de UUID v7 depende por completo del reloj de la máquina que la genera, así que si el reloj de ese servidor está desajustado, el resultado extraído también lo estará. Además, ten en cuenta que esta herramienta extrae mecánicamente una "posible marca de tiempo" incluso de otras versiones de UUID como v4; eso es puramente una interpretación de posiciones de bits y no garantiza que el valor resultante tenga sentido.

→ Ver todas las curiosidades