Sử dụng numeric
như một loại dấu thời gian nano cơ bản. Hàm chuyển đổi một giá trị số thành biểu diễn dấu thời gian dạng văn bản của nó:
create or replace function nanotimestamp_as_text(numeric)
returns text language sql immutable as $$
select concat(to_timestamp(trunc($1))::timestamp::text, ltrim(($1- trunc($1))::text, '0'))
$$;
Bạn cũng có thể dễ dàng chuyển đổi các giá trị số thành dấu thời gian thông thường trong trường hợp không cần độ siêu chính xác, ví dụ:
with my_data(nano_timestamp) as (
select 1508327235.388551234::numeric
)
select
to_timestamp(nano_timestamp)::timestamp,
nanotimestamp_as_text(nano_timestamp)
from my_data;
to_timestamp | nanotimestamp_as_text
----------------------------+-------------------------------
2017-10-18 13:47:15.388551 | 2017-10-18 13:47:15.388551234
(1 row)