PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wochentag, Millisekunde, Mikrosekunde, Nanosekunde aus einem Datum in Postgres extrahieren

Ich bin mir nicht sicher, welches Äquivalent Sie suchen, aber:

  • es gibt keine Präzision im Nanosekundenbereich in PostgreSQL:Der erlaubte Bereich von p (Präzision) ist von 0 bis 6 für den timestamp und interval Typen.
  • Einige Datumsteile enthalten andere:z. B. milliseconds enthält seconds &microseconds enthält milliseconds (und damit seconds auch).

Wenn Sie nach logisch getrennten Werten suchen, müssen Sie etwas rechnen, z. B.:

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

Oder wenn Sie sehen möchten, wie weit ein Zeitstempel innerhalb seiner tatsächlichen Woche liegt, können Sie timestamp verwenden (und interval ) Arithmetik auch:

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

(Obwohl es ziemlich schwierig ist, dies für Wochen zu berechnen, die am Sonntag beginnen:date_trunc funktioniert nur mit ISO-Wochen).

http://rextester.com/SOOO48159