Problem:
Du vill ha aktuellt datum och tid i en PostgreSQL-databas. Du behöver inte tidszonförskjutningen.
Lösning:
Vi använder funktionen LOCALTIMESTAMP
för att få aktuellt datum och tid utan tidszonsinformation:
SELECT LOCALTIMESTAMP ;
Här är resultatet av frågan:
2019-09-24 20:10:58.977914
Diskussion:
PostgreSQL-funktionen LOCALTIMESTAMP
returnerar det aktuella datumet och tiden (för maskinen som kör den instansen av PostgreSQL) som en tidsstämpel värde. Den använder "ÅÅÅÅ-MM-DD hh:mm:ss.nnnnnnnn ' format, där:
- ÅÅÅÅ är ett 4-siffrigt år.
- MM är en tvåsiffrig månad.
- DD är en tvåsiffrig dag.
- 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 datum och tid med en specifik precision, sätt ett heltal från 0 till 6 som ett argument inom parentes. Detta kommer att returnera datum och tid med önskat antal bråkdelar av sekunder. Till exempel LOCALTIMESTAMP(1)
betecknar endast en bråkdelsekund (d.v.s. en plats efter decimalen); 2 kommer att returnera två platser, etc. Standardprecisionen är 6, vilket också är det maximala antalet bråksekunder; detta är vad du får om du inte använder fästen alls. Titta på nästa exempel:
SELECT LOCALTIMESTAMP(0) ;
Här är resultatet av frågan:
2019-09-24 20:10:58
Det här resultatet innehåller inte bråkdelar av sekunder eftersom vi sätter 0 som argument.
Denna funktion returnerar tidpunkten då den aktuella transaktionen startade. Skillnaden mellan LOCALTIMESTAMP
och CURRENT_TIMESTAMP
är att LOCALTIMESTAMP
inkluderar inte tidszonsförskjutningen.