sql >> Base de Datos >  >> RDS >> PostgreSQL

Extraiga el día de la semana, milisegundos, microsegundos, nanosegundos de una fecha en Postgres

No estoy seguro de qué equivalente está buscando, pero:

  • no hay precisión de nanosegundos en PostgreSQL:El rango permitido de p (precisión) es de 0 a 6 para la timestamp y interval tipos.
  • algunas partes de la fecha incluyen otras:es decir, milliseconds contiene seconds &microseconds contiene milliseconds (y por lo tanto seconds también).

Si está buscando valores lógicamente separados, deberá hacer algunos cálculos, por ejemplo:

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

O, si está buscando qué tan lejos está una marca de tiempo dentro de su semana real, puede usar timestamp (y interval ) aritmética también:

select ts - date_trunc('week', ts) time_elapsed_since_monday

(Aunque es bastante difícil calcular esto para las semanas que comienzan el domingo:date_trunc funciona solo con semanas ISO).

http://rextester.com/SOOO48159