PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wyodrębnij dzień tygodnia, milisekundę, mikrosekundę, nanosekundę z daty w Postgres

Nie jestem pewien, jakiego odpowiednika szukasz, ale:

  • nie ma dokładności nanosekundowej w PostgreSQL:Dozwolony zakres p (precyzja) jest od 0 do 6 dla timestamp i interval typy.
  • niektóre części daty zawierają inne:np. milliseconds zawiera seconds &microseconds zawiera milliseconds (i stąd seconds też).

Jeśli szukasz logicznie oddzielnych wartości, musisz wykonać trochę matematyki, np.:

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

Lub, jeśli szukasz, jak daleko znajduje się znacznik czasu w swoim rzeczywistym tygodniu, możesz użyć timestamp (i interval ) także arytmetyka:

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

(Chociaż raczej trudno jest to obliczyć dla tygodni rozpoczynających się w niedzielę:date_trunc działa tylko z tygodniami ISO).

http://rextester.com/SOOO48159



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie zmiennego okresu w interwale w Postgres

  2. Maksymalna wartość rzędowa (z n kolumn) - Eleganckie podejście

  3. Jak działa KOPIUJ i dlaczego jest o wiele szybszy niż WSTAWIANIE?

  4. Jaki jest typ daty w npgsql?

  5. Jak napisać regułę usuwania na widoku?