Problem:
Du vill ha aktuell tid i en PostgreSQL-databas. Du vill inte ha tidszonförskjutning.
Lösning:
Vi använder funktionen LOCALTIME
för att få aktuell tid utan tidszonförskjutning.
SELECT LOCALTIME;
Här är resultatet av frågan:
22:15:51.987914
Diskussion:
PostgreSQL-funktionen LOCALTIME
returnerar den aktuella tiden på maskinen som kör PostgreSQL. Den returnerar den som en tidsdatatyp i 'hh:mm:ss.nnnnnn ' format. I detta format:
- hh är en tvåsiffrig timme.
- mm är en tvåsiffrig minut.
- ss är en tvåsiffrig sekund.
- nnnnnn är bråkdelar av sekunder (från noll till sexsiffrig precision).
Som du märker har denna funktion inga parenteser. Men om du vill visa tiden med en specifik precision, använd parenteser med ett heltal från 0 till 6 som argument. Detta kommer att returnera tiden med önskat antal bråkdelar av sekunder. Till exempel, LOCALTIME(1)
betecknar endast en bråkdelsekund (d.v.s. en plats efter decimalen); 2 kommer att returnera två platser, etc. Standardvärdet (inga parenteser eller tomma parenteser) är sex, vilket också är det maximala antalet bråkdelar. Titta på nästa exempel:
SELECT LOCALTIME(0) ;
Här är resultatet av frågan:
21:12:06
Detta resultat innehåller inte bråkdelar av sekunder eftersom vi sätter 0 som argument.
LOCALTIME
returnerar den tidpunkt då den aktuella transaktionen startar. Skillnaden mellan LOCALTIME
och CURRENT_TIME
är att LOCALTIME inte inkluderar tidszonsförskjutningen.