sql >> Databasteknik >  >> RDS >> PostgreSQL

Vilket är det mest eleganta sättet att lagra tidsstämpel med nanosec i postgresql?

Använd numeric som en bastyp av nanotidsstämplar. Funktionen konverterar ett numeriskt värde till dess textuella tidsstämpelrepresentation:

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'))
$$;

Du kan också enkelt konvertera numeriska värden till vanliga tidsstämplar i fall där superprecisionen inte är nödvändig, till exempel:

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)


  1. Spara användarmodell i viloläge till Postgres

  2. Hur man anropar en Oracle PL/SQL-objekt supermetod

  3. Hur man får information om kompileringsfel i Oracle/TOAD

  4. Räkna ackumulerad summa i Postgresql