PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jaki jest najbardziej elegancki sposób przechowywania znacznika czasu za pomocą nanosec w postgresql?

Użyj numeric jako podstawowy typ znaczników czasu nano. Funkcja konwertuje wartość liczbową na jej tekstową reprezentację znacznika czasu:

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

Możesz także łatwo przekonwertować wartości liczbowe na zwykłe znaczniki czasu w przypadkach, gdy superprecyzja nie jest konieczna, na przykład:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wybrać więcej niż 1 rekord dziennie?

  2. Jak zmienić ustawienia regionalne podczas formatowania liczb w PostgreSQL?

  3. Jak połączyć ciągi w polu ciągu w zapytaniu PostgreSQL „grupuj według”?

  4. Algorytm dopasowywania w SQL

  5. PG::InvalidParameterValue:ERROR:nieprawidłowa wartość parametru client_min_messages:panika