fuso horário padrão do postgres

Eu instalei o PostgreSQL 9 e o tempo que ele está mostrando é de 1 hora atrás do tempo do servidor.

Corrida Select NOW() mostra: 2011-07-12 11:51:50.453842+00

A data do servidor mostra: Ter 12 de julho 12:51:40 BST 2011

Está 1 hora atrasada, mas o fuso horário mostrado no phppgadmin é: TimeZone Etc / GMT0

Eu tentei ir para o postgresql.conf e definir timezone = GMT, em seguida, executando uma reboot, mas nenhuma alteração.

Alguma idéia que eu pensei que teria usado apenas o fuso horário do servidor, mas obviamente não ?!

SOLUÇÃO !: Eu fiz o ajuste para o GMT antes e estava uma hora atrás.Depois de pesquisar por aí, descobri que eu precisava configurá-lo para a Europa / Londres. Isso leva em conta a hora +1 no horário de verão britânico, GMT não!

O fuso horário é um parâmetro de session. Assim, você pode alterar o fuso horário da session atual.

Veja o doc .

 set timezone TO 'GMT'; 

Ou, seguindo mais de perto o padrão SQL, use o comando SET TIME ZONE . Observe duas palavras para “TIME ZONE”, onde o código acima usa uma única palavra “timezone”.

 SET TIME ZONE 'UTC'; 

O doc explica a diferença:

SET TIME ZONE estende a syntax definida no padrão SQL. O padrão permite apenas deslocamentos numéricos do fuso horário, enquanto o PostgreSQL permite especificações de fuso horário mais flexíveis. Todos os outros resources do SET são extensões do PostgreSQL.

Para realizar a alteração do fuso horário no Postgres 9.1, você deve:

1.- Procure em sua pasta “timezones” em /usr/share/postgresql/9.1/ para o arquivo apropriado, no meu caso seria “America.txt”, procure o local mais próximo da sua zona e copie o arquivo. primeiras letras na coluna da esquerda.

Por exemplo: se você estiver em “Nova York” ou “Panamá”, será “EST”:

 # - EST: Eastern Standard Time (Australia) EST -18000 # Eastern Standard Time (America) # (America/New_York) # (America/Panama) 

2.- Descomente a linha “timezone” no seu arquivo postgresql.conf e coloque o fuso horário como mostrado:

 #intervalstyle = 'postgres' #timezone = '(defaults to server environment setting)' timezone = 'EST' #timezone_abbreviations = 'EST' # Select the set of available time zone # abbreviations. Currently, there are # Default # Australia 

3.- Reinicie o Postgres

Escolha um fuso horário de:

 SELECT * FROM pg_timezone_names; 

E coloque o exemplo:

 ALTER DATABASE postgres SET timezone TO 'Europe/Berlin'; 

Use seu nome do database.

A resposta aceita por Muhammad Usama está correta.

Nome do Parâmetro de Configuração

Essa resposta mostra como definir um parâmetro de configuração específico do Postgres com o seguinte:

 SET timezone TO 'UTC'; 

… Onde o timezone não é um comando SQL, é o nome do parâmetro de configuração.

Veja o documento para isso .

Comando SQL Padrão

Como alternativa, você pode usar o comando SQL definido pela especificação SQL: SET TIME ZONE . Nessa syntax, um par de palavras TIME ZONE substitui “timezone” (comando SQL real versus nome do parâmetro) e não há “TO”.

 SET TIME ZONE 'UTC'; 

Tanto este comando quanto o acima têm o mesmo efeito, para definir o valor apenas para a session atual. Para tornar a mudança permanente, veja esta resposta irmã .

Veja o documento para isso .

Nome do fuso horário

Você pode especificar um nome de fuso horário adequado . A maioria destes é continente / região.

 SET TIME ZONE 'Africa/Casablanca'; 

…ou…

 SET TIME ZONE 'America/Montreal'; 

Evite as abreviações de 3 ou 4 letras , como EST ou IST pois elas não são padronizadas nem exclusivas.

Obter zona atual

Para ver o fuso horário atual de uma session, tente uma das seguintes instruções. Tecnicamente, estamos chamando o comando SHOW para exibir um parâmetro de tempo de execução.

 SHOW timezone ; 

…ou…

 SHOW time zone ; 

EUA / Pacífico

Além das respostas anteriores, se você usar a ferramenta pgAdmin III você pode definir o fuso horário da seguinte maneira:

  1. Abra a configuração do Postgres através de Ferramentas> Configuração do Servidor> postgresql.conf
  2. Procure o fuso horário de input e clique duas vezes para abrir
  3. Alterar o valor
  4. Recarregue o servidor para aplicar alterações de configuração (botão Reproduzir no topo ou via serviços)

Configuração do Postgres no pgAdmin III

Observe que muitos clientes de terceiros têm configurações de fuso horário próprias sobrepondo qualquer configuração do servidor Postgres e \ ou da session.

Por exemplo, se você estiver usando o ‘IntelliJ IDEA 2017.3’ (ou DataGrips), defina o fuso horário como:

‘Propriedades da fonte do database’ -> guia ‘Avançado’ -> ‘Opções da VM’: -Duser.timezone = UTC + 06: 00

caso contrário, você verá “UTC”, independentemente do que tiver definido em qualquer outro lugar.

Talvez não relacionado com a questão, mas eu precisava usar CST, definir o fuso horário do sistema para o tz desejado (América / …) e, em seguida, em postgresql conf definir o valor do fuso horário para ‘localtime’ e funcionou como um encanto , current_time imprimindo a hora certa (Postgresql 9.5 no Ubuntu 16)