Probleem:
U wilt de huidige datum en tijd in een PostgreSQL-database krijgen. U hebt de tijdzone-offset niet nodig.
Oplossing:
We gebruiken de functie LOCALTIMESTAMP
om de huidige datum en tijd te krijgen zonder enige tijdzone-informatie:
SELECT LOCALTIMESTAMP ;
Dit is het resultaat van de zoekopdracht:
2019-09-24 20:10:58.977914
Discussie:
De PostgreSQL-functie LOCALTIMESTAMP
geeft de huidige datum en tijd terug (van de machine waarop die instantie van PostgreSQL draait) als een tijdstempel waarde. Het gebruikt de 'JJJJ-MM-DD uu:mm:ss.nnnnnnn ' formaat, waarbij:
- JJJJ is een jaartal van 4 cijfers.
- MM is een 2-cijferige maand.
- DD is een dag met twee cijfers.
- uu is een 2-cijferig uur.
- mm is een 2-cijferige minuut.
- ss is een 2-cijferige seconde.
- nnnnnn zijn fractionele seconden (van nul tot 6-cijferige precisie).
Zoals u ziet, heeft deze functie geen haakjes. Als u echter de datum en tijd met een specifieke precisie wilt weergeven, plaatst u een geheel getal van 0 tot 6 als argument tussen haakjes. Dit geeft de datum en tijd terug met het gewenste aantal fracties van seconden. Bijvoorbeeld LOCALTIMESTAMP(1)
geeft slechts één fractionele seconde aan (d.w.z. één plaats achter de komma); 2 geeft twee plaatsen terug, enz. De standaardprecisie is 6, wat ook het maximale aantal fractionele seconden is; dit krijg je als je helemaal geen haakjes gebruikt. Kijk naar het volgende voorbeeld:
SELECT LOCALTIMESTAMP(0) ;
Dit is het resultaat van de zoekopdracht:
2019-09-24 20:10:58
Dit resultaat bevat geen fracties van seconden omdat we 0 als argument gebruiken.
Deze functie retourneert het tijdstip waarop de huidige transactie is gestart. Het verschil tussen LOCALTIMESTAMP
en CURRENT_TIMESTAMP
is dat de LOCALTIMESTAMP
omvat niet de tijdzoneverschuiving.