V PostgreSQL timeofday()
je nestandardní časová funkce SQL, která vrací aktuální datum a čas se zkratkou časového pásma.
Je to podobné jako clock_timestamp()
funkce, kromě toho, že vrací svůj výsledek jako formátovaný text
řetězec namísto timestamp with time zone
hodnota.
Výsledek obou funkcí se během provádění příkazu mění. Proto můžete získat různé výsledky v různých částech příkazu, pokud funkce voláte vícekrát v rámci jednoho příkazu.
Syntaxe
Syntaxe vypadá takto:
timeofday()
Nepřijímá tedy žádné parametry.
Příklad
Zde je základní příklad k demonstraci.
SELECT timeofday();
Výsledek:
Thu Jul 02 10:00:27.068776 2020 AEST
Vícenásobné volání
Zde je základní příklad, který ukazuje, jak se mohou výsledky lišit, když funkci voláte vícekrát v rámci jednoho příkazu SQL.
\x
SELECT
timeofday(),
pg_sleep(5),
timeofday(),
pg_sleep(3),
timeofday();
Výsledek (při použití vertikálního výstupu):
timeofday | Thu Jul 02 10:02:23.060770 2020 AEST pg_sleep | timeofday | Thu Jul 02 10:02:28.131195 2020 AEST pg_sleep | timeofday | Thu Jul 02 10:02:31.192749 2020 AEST
Zde jsem použil pg_sleep()
funkce pro zpoždění spuštění o několik sekund. První volání zpozdí provedení o 5 sekund a druhé volání o 3 sekundy.
Můžeme to vidět pokaždé, když timeofday()
byl skutečný čas mírně odlišný. To je většinou způsobeno pg_sleep()
funkce, ale i bez ní se může mírně lišit v závislosti na rychlosti běhu dotazu.
Zde je to opět bez pg_sleep()
hovory.
SELECT
timeofday(),
timeofday(),
timeofday();
Výsledek (při použití vertikálního výstupu):
timeofday | Thu Jul 02 10:03:26.044065 2020 AEST timeofday | Thu Jul 02 10:03:26.044076 2020 AEST timeofday | Thu Jul 02 10:03:26.044080 2020 AEST
Tyto příklady používají vertikální výstup (obvykle nazývaný rozšířené zobrazení v psql), aby bylo snazší číst výsledky.
Rozšířené zobrazení v psql můžete přepínat pomocí \x
.