Problem:
Du vil gerne have den aktuelle dato og tid i en PostgreSQL-database. Du behøver ikke tidszoneforskydningen.
Løsning:
Vi bruger funktionen LOCALTIMESTAMP
for at få den aktuelle dato og klokkeslæt uden nogen tidszoneoplysninger:
SELECT LOCALTIMESTAMP ;
Her er resultatet af forespørgslen:
2019-09-24 20:10:58.977914
Diskussion:
PostgreSQL-funktionen LOCALTIMESTAMP
returnerer den aktuelle dato og klokkeslæt (på den maskine, der kører den forekomst af PostgreSQL) som et tidsstempel værdi. Den bruger "ÅÅÅÅ-MM-DD tt:mm:ss.nnnnnnnn ' format, hvor:
- ÅÅÅÅ er et 4-cifret årstal.
- MM er en 2-cifret måned.
- DD er en 2-cifret dag.
- hh er en 2-cifret time.
- mm er et 2-cifret minut.
- ss er et 2-cifret sekund.
- nnnnnn er brøkdele af sekunder (fra nul til 6-cifret præcision).
Som du bemærker, har denne funktion ingen parenteser. Men hvis du ønsker at vise dato og klokkeslæt med en bestemt præcision, skal du sætte et heltal fra 0 til 6 som et argument i parentes. Dette vil returnere dato og klokkeslæt med det ønskede antal brøksekunder. For eksempel LOCALTIMESTAMP(1)
angiver kun et brøksekund (dvs. et sted efter decimalen); 2 vil returnere to pladser osv. Standardpræcisionen er 6, hvilket også er det maksimale antal brøksekunder; dette er, hvad du får, hvis du slet ikke bruger beslag. Se på det næste eksempel:
SELECT LOCALTIMESTAMP(0) ;
Her er resultatet af forespørgslen:
2019-09-24 20:10:58
Dette resultat indeholder ikke brøkdele af sekunder, fordi vi sætter 0 som argument.
Denne funktion returnerer det tidspunkt, hvor den aktuelle transaktion startede. Forskellen mellem LOCALTIMESTAMP
og CURRENT_TIMESTAMP
er det LOCALTIMESTAMP
inkluderer ikke tidszoneforskydningen.