sql >> Database teknologi >  >> RDS >> PostgreSQL

Udtræk ugedag, millisekund, mikrosekund, nanosekund fra en dato i Postgres

Jeg er ikke sikker på, hvilken ækvivalent du leder efter, men:

  • der er ingen nanosekunds præcision i PostgreSQL:Det tilladte interval af p (præcision) er fra 0 til 6 for timestamp og interval typer.
  • nogle datodele inkluderer andre:dvs. milliseconds indeholder seconds &microseconds indeholder milliseconds (og dermed seconds også).

Hvis du leder efter logisk adskilte værdier, skal du lave noget matematik, f.eks.:

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

Eller, hvis du ser efter, hvor langt et tidsstempel er inden for dens faktiske uge, kan du bruge timestamp (og interval ) aritmetik også:

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

(Selvom det er ret svært at beregne dette for uger, der starter på søndag:date_trunc virker kun med ISO-uger).

http://rextester.com/SOOO48159



  1. PHP MYSQL grupperangeringsforespørgsel

  2. Hvorfor en enkelt SQL delete-sætning vil forårsage dødvande?

  3. Hvorfor bruge et READ UNCOMMITTED isolationsniveau?

  4. CASE og COALESCE kortslutningsevaluering fungerer med sekvenser i PL/SQL, men ikke i SQL