UUID v7 定义为:
前 48 位是自 Unix 纪元以来的大端无符号毫秒数。接下来的 4 位是版本位 (0111),后面是 12 位伪随机数据。
如何从 UUID v7 字符串中提取时间戳?
这有效:
SELECT to_timestamp(x'0187296000797352b8a70b7088b46d0f'::bit(48)::bigint / 1000);
Run Code Online (Sandbox Code Playgroud)
给出“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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |