sql >> Database >  >> RDS >> PostgreSQL

Extraheer weekdag, milliseconde, microseconde, nanoseconde van een datum in Postgres

Ik weet niet zeker welk equivalent je zoekt, maar:

  • er is geen nanoseconde precisie in PostgreSQL:Het toegestane bereik van p (precisie) is van 0 tot 6 voor de timestamp en interval soorten.
  • sommige datumdelen bevatten andere:d.w.z. milliseconds bevat seconds &microseconds bevat milliseconds (en dus seconds ook).

Als u op zoek bent naar logisch gescheiden waarden, moet u wat rekenwerk doen, bijvoorbeeld:

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

Of, als u wilt weten hoe ver een tijdstempel is binnen de werkelijke week, kunt u timestamp gebruiken (en interval ) ook rekenen:

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

(Hoewel het nogal moeilijk is om dit te berekenen voor weken die beginnen op zondag:date_trunc werkt alleen met ISO-weken).

http://rextester.com/SOOO48159



  1. Op zoek naar een eenvoudige zoekopdracht in volledige tekst? Probeer MySQL InnoDB + CakePHP met Word Stemming

  2. Retourwaarde ophalen uit SQL Stored Procedure met behulp van PHP

  3. Stuur json-object naar mysql met behulp van jquery/javascript/php?

  4. Duplicatie met SUM, LEFT JOIN en GROUP BY