sql >> Databáze >  >> RDS >> PostgreSQL

Jak získat aktuální datum a čas s posunem časového pásma v PostgreSQL

Problém:

Chcete získat aktuální datum a čas s informacemi o časovém pásmu z databáze PostgreSQL.

Řešení:

K získání aktuálního data a času s posunem časového pásma použijeme buď CURRENT_TIMESTAMP nebo NOW().

SELECT CURRENT_TIMESTAMP ;

Zde je výsledek dotazu:

2019-09-15 13:13:12.118432+02

Diskuse:

CURRENT_TIMESTAMP vrátí aktuální datum, čas a posun časového pásma (pomocí data, času a časového pásma počítače, na kterém běží PostgreSQL). Toto je vráceno jako hodnota v 'RRRR-MM-DD hh:mm:ss.nnnnnn+/-tz' formát. V tomto formátu:

  • RRRR je čtyřmístný rok.
  • MM je dvoumístný měsíc.
  • DD je dvoumístný den v měsíci.
  • hh je 2místná hodina.
  • mm je dvoumístná minuta.
  • ss je 2místná sekunda.
  • nnnnnn definuje počet zlomkových sekund (tj. přesnost) od 0 do 6.
  • +tz nebo -tz je posun časového pásma, plus nebo minus od UTC.

Jak jste si všimli, tato funkce nemá žádné závorky. Pokud však chcete zobrazit datum a čas s určitou přesností, můžete použít volitelný argument celé číslo. Vrací datum a čas se zlomky sekund a posun časového pásma. Tento argument musí být v rozsahu 0 až 6; 0 není zlomek sekund, 1 je jedna zlomková sekunda (např. jedno místo za desetinnou čárkou) atd. Podívejte se na další příklad:

SELECT CURRENT_TIMESTAMP(3) ;

Zde je výsledek dotazu:

2019-09-15 13:01:51.142+02

Tento výsledek obsahuje 3-místný zlomek sekundy, protože jsme ve funkci CURRENT_TIMESTAMP vložili 3 jako argument. Na konci se stále zobrazuje posun časového pásma.

Čas vrácený touto funkcí se nemění během transakce nebo jediného dotazu. Je to vždy čas, kdy transakce začala.

NOW() je podobné CURRENT_TIMESTAMP funkce a vrátí stejný výsledek. Rozdíl je v tom, že CURRENT_TIMESTAMP je standardní funkce SQL, zatímco NOW() je specifická pro PostgreSQL.

SELECT NOW() ;

Zde je výsledek dotazu:

2019-08-27 12:18:55.324145+02

Všimněte si, že funkce NOW() vyžaduje hranaté závorky. Můžete je však nechat prázdné a získat výchozí hodnotu.

CURRENT_TIMESTAMP a NOW() vrátí timestamptz datový typ.


  1. Formát data SQL:Jak s ním zacházet chytře

  2. Jak vytvořit offline aplikaci pro internacionalizaci:Vytvořte strukturu projektu

  3. Vytvořte omezení CHECK v SQLite

  4. Naučte se používat příkaz CASE v SQL