PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да разберете часова зона на клеймо в postgresql 8.3

Предполагам, че имате колона с име ct който има тип TIMESTAMPTZ в таблицата t . След това можете да използвате:

SELECT EXTRACT(TIMEZONE FROM ct) FROM t;

за да получите отместването на часовата зона в секунди. Това ви дава 3600 от UTC /GMT това означава или GMT+1 , CET или каквото и да е. Върнатата стойност зависи от вашата TIMEZONE настройка.

Пример (живея в Германия, действителната часова зона е 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

Както можете да видите, той винаги извежда всичко в конфигурираната часова зона. Така че отместването, което ще получите с EXTRACT(TIMEZONE FROM ...) зависи от вашата TIMEZONE настройка. Часовата зона, дадена на INSERT е загубен, защото не си струва да бъде спасен. Важното е всичко да е правилно и това не трябва да зависи от TIMEZONE настройка. PostgreSQL прави това много добре.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Елиминиране на дублиращи се редове в Postgres

  2. DatabaseError:стойността е твърде дълга за тип знак, вариращ (100)

  3. Връщане на стойности от картографирани методи на MyBatis <insert>

  4. Няма достъп до таблица без име на public.table. Има ли начин да се отървем от обществеността?

  5. Doctrine2 не задава последователност по подразбиране за колона с id (postgres)