Instalei PostgreSQL 9
e o horário que ele está mostrando está 1 hora atrasado em relação ao horário do servidor.
Programas em execução Select NOW()
:2011-07-12 11:51:50.453842+00
A data do servidor mostra: Tue Jul 12 12:51:40 BST 2011
Está 1 hora atrasado, mas o fuso horário mostrado em phppgadmin
é:TimeZone Etc/GMT0
Eu tentei entrar na postgresql.conf
configuração e
fuso horário = GMT
em seguida, reiniciando, mas sem alterações.
Alguma ideia que pensei que apenas usaria o fuso horário do servidor, mas obviamente não ?!
SOLUÇÃO !: Configurei para GMT
antes e estava uma hora atrasado. após pesquisar descobri que eu precisava configurá-lo para Europe/London
. Isso leva em consideração a hora +1 no horário de verão britânico, o GMT não!
fonte
SET TIME ZONE 'UTC';
. Veja o doc .Escolha um
timezone
de:E
set
conforme o exemplo abaixo dado:Use seu nome de banco de dados no lugar da
postgres
declaração acima.fonte
SELECT pg_reload_conf();
:)SELECT pg_reload_conf()
retornou verdade, masnow()
eselect current_setting('TIMEZONE')
continuar a valores de retorno para 'America / New_York'. É porque não sou superusuário?Para realizar a mudança de fuso horário no Postgres 9.1, você deve:
1.- Pesquise na pasta "fusos horários" em /usr/share/postgresql/9.1/ o arquivo adequado, no meu caso seria "America.txt", nele procure o local mais próximo da sua zona e copie o primeiras letras na coluna da esquerda.
Por exemplo: se você estiver em "Nova York" ou "Panamá", seria "EST":
2.- Descomente a linha "fuso horário" em seu
postgresql.conf
arquivo e coloque seu fuso horário conforme mostrado:3.- Reinicie o Postgres
fonte
−05:00
ano todo, enquanto Nova York muda uma hora com o horário de verão (DST). Um fuso horário é mais do que um deslocamento; um fuso horário inclui o passado, presente e futuro conjunto de regras e anomalias, como DST. Então, digamos que você quer dizer:America/Panama
,America/New_York
,Europe/London
,UTC
(ouZulu
).SELECT * FROM pg_timezone_names
que provavelmente é mais seguro, pois sites de terceiros não serão necessariamente tão atualizados (ou desatualizado) como sua própria instância de banco de dados particular.postgresql
select pg_reload_conf()
.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:
… Onde
timezone
não é um comando SQL, é o nome do parâmetro de configuração.Veja o doc para isso .
Comando SQL Padrão
Alternativamente, você pode usar o comando SQL definido pela especificação SQL:
SET TIME ZONE
. Nesta sintaxe, um par de palavrasTIME ZONE
substitui "fuso horário" (comando SQL real versus nome do parâmetro) e não há "PARA".Tanto este comando quanto o anterior têm o mesmo efeito, para definir o valor apenas para a sessão atual. Para tornar a mudança permanente, consulte a resposta deste irmão .
Veja o doc para isso .
Nome do Fuso Horário
Você pode especificar um nome de fuso horário adequado . A maioria deles é continente / região.
…ou…
Evite as abreviações de 3 ou 4 letras , como
EST
ouIST
porque não são padronizadas nem exclusivas. Consulte a Wikipedia para obter uma lista de nomes de fusos horários .Obter zona atual
Para ver o fuso horário atual de uma sessão, tente uma das seguintes instruções. Tecnicamente, estamos chamando o
SHOW
comando para exibir um parâmetro de tempo de execução.…ou…
fonte
SHOW
parteSELECT current_setting('TIMEZONE')
Além das respostas anteriores, se você usar a ferramenta pgAdmin III, você pode definir o fuso horário da seguinte forma:
fonte
Observe que muitos clientes de terceiros têm configurações de fuso horário próprias sobrepondo qualquer servidor Postgres e \ ou configurações de sessão.
Por exemplo, se você estiver usando 'IntelliJ IDEA 2017.3' (ou DataGrips), deve definir o fuso horário como:
'Propriedades de origem do banco de dados' -> guia 'Avançado' -> 'Opções de VM': -Duser.timezone = UTC + 06: 00
caso contrário, você verá 'UTC' independentemente de tudo o que tiver definido em qualquer outro lugar.
fonte
Talvez não relacionado à questão, mas eu precisava usar o CST, definir o fuso horário do sistema para o tz desejado (América / ...) e, em seguida, na configuração do postgresql definir o valor do fuso horário para 'localtime' e funcionou como um encanto , current_time imprimindo na hora certa (Postgresql 9.5 no Ubuntu 16)
fonte