V PostgreSQL je to localtimestamp() funkce vrací místní datum a čas bez posunu časového pásma.
Pokud potřebujete posun časového pásma, použijte current_timestamp() místo toho.
Syntaxe
Můžete jej použít jedním z následujících způsobů:
localtimestamp
localtimestamp(x)
Kde x je volitelný parametr přesnosti, který způsobí zaokrouhlení výsledku na x počet desetinných číslic v poli sekund.
Bez parametru přesnosti (první syntaxe) je výsledek dán s plnou dostupnou přesností.
Příklad – Úplná přesnost
Zde je základní příklad pro předvedení výsledku s plnou dostupnou přesností.
SELECT localtimestamp; Výsledek:
2020-07-01 15:55:48.039777
Příklad – Specifická přesnost
Zde je příklad, který demonstruje, jak určit přesnost.
SELECT localtimestamp(0); Výsledek:
2020-07-01 15:56:02
V tomto příkladu jsem zadal přesnost nula, což znamená, že nebyly vráceny žádné zlomky sekund.
Zde je další příklad, kde zadávám počet zlomkových sekund.
SELECT localtimestamp(3); Výsledek:
2020-07-01 15:56:14.771
Transakce
Skutečné časové razítko vychází z času zahájení aktuální transakce. Proto se v průběhu transakce nemění.
To umožňuje, aby jedna transakce měla konzistentní představu o „aktuálním“ čase, takže více úprav v rámci stejné transakce nese stejný časový údaj.
Zde je příklad, který to demonstruje.
BEGIN;
SELECT localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
SELECT pg_sleep(5);
SELECT localtimestamp;
COMMIT; Zde je úplný výstup mého terminálu při provádění této transakce v psql:
postgres=# BEGIN; BEGIN postgres=# SELECT localtimestamp; localtimestamp -------------------------- 2020-07-02 09:25:38.3858 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT localtimestamp; localtimestamp -------------------------- 2020-07-02 09:25:38.3858 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT localtimestamp; localtimestamp -------------------------- 2020-07-02 09:25:38.3858 (1 row) postgres=# COMMIT; COMMIT
Všechny tři časové hodnoty jsou stejné, i když pg_sleep() funkce byla použita ke zpoždění provedení mezi jednotlivými příkazy v rámci transakce.
To je v kontrastu s statement_timestamp() což dělá měnit s každým příkazem.
Více hovorů v rámci výpisu
Nemění se ani v průběhu výpisu.
\x
SELECT
localtimestamp,
pg_sleep(5),
localtimestamp,
pg_sleep(5),
localtimestamp; Výsledek (při použití vertikálního výstupu):
localtimestamp | 2020-07-02 09:26:46.743801 pg_sleep | localtimestamp | 2020-07-02 09:26:46.743801 pg_sleep | localtimestamp | 2020-07-02 09:26:46.743801
Všechny tři časové hodnoty jsou stejné, i když pg_sleep() funkce byla použita ke zpoždění provedení mezi každým voláním localtimestamp .
To je v kontrastu s clock_timestamp() funkci, kterou dělá změnit, jak postupuje příkazem.
V tomto příkladu jsem použil vertikální výstup (známý také jako rozšířený výstup), aby byly výsledky o něco kompaktnější.
Rozšířený výstup v psql můžete přepínat pomocí \x .