sql >> Databáze >  >> RDS >> PostgreSQL

Extrahujte den v týdnu, milisekundu, mikrosekundu, nanosekundu z data v Postgresu

Nejsem si jistý, jaký ekvivalent hledáte, ale:

  • neexistuje žádná nanosekundová přesnost v PostgreSQL:Povolený rozsah p (přesnost) je od 0 do 6 pro timestamp a interval typy.
  • některé části data zahrnují jiné:např. milliseconds obsahuje seconds &microseconds obsahuje milliseconds (a tedy seconds také).

Pokud hledáte logicky oddělené hodnoty, budete muset trochu spočítat, např.:

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

Nebo, pokud hledáte, jak daleko je časové razítko ve svém aktuálním týdnu, můžete použít timestamp (a interval ) také aritmetika:

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

(I když je to poměrně těžké vypočítat pro týdny, které začínají v neděli:date_trunc pracuje pouze s týdny ISO).

http://rextester.com/SOOO48159



  1. Mohu ovládat GROUP BY v orm django 1.3?

  2. Oracle IN vs Existuje rozdíl?

  3. Dotaz na komplexní kritéria:použití JPA místo NativeQuery

  4. Více vztahů ke stejnému modelu CakePHP