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

Jak zjistit časové pásmo časového razítka v postgresql 8.3

Předpokládám, že máte sloupec s názvem ct který má typ TIMESTAMPTZ v tabulce t . Pak můžete použít:

SELECT EXTRACT(TIMEZONE FROM ct) FROM t;

získat posun časového pásma v sekundách. To vám dává 3600 z UTC /GMT to znamená buď GMT+1 , CET nebo cokoli jiného. Vrácená hodnota závisí na vašem TIMEZONE nastavení.

Ukázka (žiji v Německu, aktuální časové pásmo je GMT+1 /CET ):

test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 18:00:00+01

test=# set timezone to 'gmt';
SET
test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 17:00:00+00

Jak můžete vidět, vždy vypíše cokoliv v nakonfigurovaném časovém pásmu. Takže offset získáte pomocí EXTRACT(TIMEZONE FROM ...) závisí na vašem TIMEZONE nastavení. Časové pásmo zadané v INSERT je ztracen, protože nestojí za to být spasen. Důležité je, že je vše v pořádku a nemělo by to záviset na TIMEZONE nastavení. PostgreSQL to umí velmi dobře.



  1. Kdy bych měl používat MySQLi místo MySQL?

  2. Jaký je nejlepší přístup k vytváření dynamických dotazů (pomocí PHP+MySQL)?

  3. Jak mohu sečíst hodnotu v databázi místnosti pro Android

  4. Hostování MySQL v Azure, plně spravovaná cloudová databázová služba se spouští na ScaleGrid