Problém:
Chcete získat aktuální datum a čas v databázi PostgreSQL. Posun časového pásma nepotřebujete.
Řešení:
Použijeme funkci LOCALTIMESTAMP
pro získání aktuálního data a času bez jakýchkoli informací o časovém pásmu:
SELECT LOCALTIMESTAMP ;
Zde je výsledek dotazu:
2019-09-24 20:10:58.977914
Diskuse:
PostgreSQL funkce LOCALTIMESTAMP
vrátí aktuální datum a čas (počítače, na kterém běží daná instance PostgreSQL) jako časové razítko hodnota. Používá „RRRR-MM-DD hh:mm:ss.nnnnnnn ', kde:
- RRRR je čtyřmístný rok.
- MM je dvoumístný měsíc.
- DD je dvoumístný den.
- hh je 2místná hodina.
- mm je dvoumístná minuta.
- ss je 2místná sekunda.
- nnnnnn jsou zlomky sekund (od nuly do 6místné přesnosti).
Jak jste si všimli, tato funkce nemá žádné závorky. Pokud však chcete zobrazit datum a čas se specifickou přesností, vložte celé číslo od 0 do 6 jako argument do závorek. Tím se vrátí datum a čas s požadovaným počtem zlomků sekund. Například LOCALTIMESTAMP(1)
označuje pouze jednu zlomkovou sekundu (tj. jedno místo za desetinnou čárkou); 2 vrátí dvě místa atd. Výchozí přesnost je 6, což je také maximální počet zlomků sekund; to je to, co získáte, pokud závorky vůbec nepoužíváte. Podívejte se na následující příklad:
SELECT LOCALTIMESTAMP(0) ;
Zde je výsledek dotazu:
2019-09-24 20:10:58
Tento výsledek neobsahuje zlomky sekund, protože jsme jako argument vložili 0.
Tato funkce vrací čas, kdy aktuální transakce začala. Rozdíl mezi LOCALTIMESTAMP
a CURRENT_TIMESTAMP
je to LOCALTIMESTAMP
nezahrnuje posun časového pásma.