get_uuid_timestamp() — Расшифровка метки времени в кастомном UUID

Для расшифровки метки времени в UUID сформированном описанной ранее кастомной функцией gen_uuid() генерации UUID  можно использовать функцию get_uuid_timestamp().

Параметры

  • p_uuid — uuid

Возвращаемое значение: timestamp

Скрипт

CREATE OR REPLACE FUNCTION public.get_uuid_timestamp (
 p_uuid uuid
)
RETURNS TIMESTAMP WITHOUT TIME ZONE AS
$body$
DECLARE
 s_uuid VARCHAR(32) DEFAULT replace(p_uuid::VARCHAR(36),'-','');
BEGIN
 RETURN to_timestamp(('x'||left(s_uuid,8))::bit(32)::integer::double precision + 
 ('x'||substring(s_uuid,9,6))::bit(24)::integer::double precision/1000000);
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;

Добавить комментарий