UUID v7定义为:前48位是自Unix纪元以来的大端无符号毫秒数,接下来的4位是版本位(0111),后面是12位伪随机数据。如何从UUID v7字符串中提取时间戳?
twh00eeo1#
这是可行的:
SELECT to_timestamp(x'0187296000797352b8a70b7088b46d0f'::bit(48)::bigint / 1000);
2023-03-28 17:50:52这可以抽象为:
CREATE OR REPLACE FUNCTION extract_timestamp_from_uuid_v7(uuid_v7 UUID) RETURNS TIMESTAMP AS $$ SELECT to_timestamp(('x'||replace(uuid_v7::text, '-', ''))::bit(48)::bigint / 1000) AS result; $$ LANGUAGE sql IMMUTABLE;
1条答案
按热度按时间twh00eeo1#
这是可行的:
2023-03-28 17:50:52
这可以抽象为: