Problem:
Du vil gerne have det aktuelle tidspunkt med tidszoneforskydning i en PostgreSQL-database.
Løsning:
Vi bruger CURRENT_TIME-funktionen til at få oplysninger om den aktuelle tid og tidszone. Her er den forespørgsel, du ville skrive:
SELECT CURRENT_TIME;
Her er resultatet af forespørgslen:
16:10:11.232455-05
Diskussion:
PostgreSQL-funktionen CURRENT_TIME
returnerer den aktuelle tids- og tidszoneforskydning for den maskine, som PostgreSQL kører på. Det er givet som en værdi i 'hh:mm:ss.nnnnnn+/-tz' format. I dette format:
- hh er en 2-cifret time.
- mm er et 2-cifret minut.
- ss er et 2-cifret sekund.
- nnnnnn definerer antallet af brøksekunder (dvs. præcisionen) fra 0 til 6.
- +tz eller -tz er tidszoneforskydningen, enten plus eller minus fra UTC.
CURRENT_TIME
har ingen beslag. Men hvis du ønsker at vise tiden med en bestemt præcision, kan du tilføje parenteser og omslutte et heltal fra 0 til 6. (Et "0"-argument returnerer ingen brøksekunder, "1" returnerer et brøksekund (f.eks. en plads bag decimalen) osv. Dette returnerer tiden med dit angivne antal brøksekunder og tidszoneforskydningen. Se på det næste eksempel:
SELECT CURRENT_TIME(2) ;
Her er resultatet af forespørgslen:
16:10:11.23-05
Dette resultat indeholder et 2-cifret brøksekund, fordi vi sætter 2 som argument. Tidszoneforskydningen vises som enten positiv eller negativ (+ eller -) afhængigt af, om tiden er før eller efter UTC.
Tiden returneret af denne funktion ændres ikke under transaktioner eller en enkelt forespørgsel. Det er altid det tidspunkt, hvor transaktionen startede.