PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Extrair dia da semana, milissegundo, microssegundo, nanossegundo de uma data no Postgres


Não tenho certeza de qual equivalente você está procurando, mas:
  • não há precisão de nanossegundos no PostgreSQL:O intervalo permitido de p (precisão) é de 0 a 6 para o timestamp e interval tipos.
  • algumas partes da data incluem outras:ou seja, milliseconds contém seconds &microseconds contém milliseconds (e, portanto, seconds também).

Se você estiver procurando por valores separados logicamente, precisará fazer algumas contas, por exemplo:
select extract(dow from ts) dow,       -- day-of-week (where weeks start on sunday, which is 0)
       extract(isodow from ts) isodow, -- ISO day-of-week (where weeks start on monday, which is 1)
       floor(extract(seconds from ts))::int only_seconds,
       floor(extract(milliseconds from ts))::int - 1000 * floor(extract(seconds from ts))::int only_milliseconds,
       floor(extract(microseconds from ts))::int - 1000 * floor(extract(milliseconds from ts))::int only_microseconds,
       extract(microseconds from ts) all_microseconds

Ou, se você estiver verificando a distância de um carimbo de data/hora em sua semana real, poderá usar timestamp (e interval ) aritmética também:
select ts - date_trunc('week', ts) time_elapsed_since_monday

(Embora seja bastante difícil calcular isso para semanas que começam no domingo:date_trunc funciona apenas com semanas ISO).

http://rextester.com/SOOO48159