________________________________
> From: marc...@ig.com.br
> To: pgbr-geral@listas.postgresql.org.br
> Date: Wed, 10 Nov 2010 19:47:53 -0200
> Subject: [pgbr-geral] Que loco essa select, pegar data e hora do servidor
>
> Pessoal, meu Postgres está "biruta" ?
>
> Estou usando a seguinte select para pegar a data e hora do servidor:
>
> select
> current_date as data_sys,
> current_time as hora_sys
>
> Acontece que ele está pegando a hora com uma hora de diferença a menos,
> por exemplo, quando é no relógio da minha máquina (windows) 19:43 ele
> pega 18:43
> Não era pra o banco pegar a data e hora da bios ou do sistema operacional?
> Veja que estou falando da mesma máquina pois estou desenvolvendo localmente.
>
> Bem... como sou novo no postgres, vai a pergunta:
> Como pegar corretamente a data e hora do servidor, levando em conta o
> relogio do sistema e não do banco?
>
> Preciso pegar a hora pelo banco porque quero ter a hora do servidor e
> não da maquina local, eu faço isso na boa com mysql.
>
> obs: me parece que ele está acertando conforme o horario de verão...
> mas eu não pedi pra ele fazer isso, rsrsr, ele tem vida própria, rsrs
>
> Marcelo Silva
> ------------------------------------------------
> msn: marc...@ig.com.br
>
Prezado Marcelo,

Esse assunto já foi tratado em [1], mas complemento com algumas informações 
abaixo.

Como pode ser visto em [2] a função "current_time" retorna um tipo "time with 
time zone". Isso Quer dizer, conforme [3]:

"Quando um valor de timestamp with time zone é enviado para a saída, é sempre 
convertido de UTC para a zona horária corrente de 'timezone', e mostrado como 
hora local desta zona. Para ver a hora em outra zona horária, ou se muda 
'timezone' ou se usa a construção AT TIME ZONE (consulte a Seção 9.9.3)."

O parâmetro de sistema "timezone" define qual é a zona horária utilizada pelo 
PostgreSQL. Sua definição em [4]:

timezone (string)
-------------------
Define a zona horária para exibir e interpretar os carimbos do tempo. O valor 
padrão é 'unknown', o que significa utilizar o que estiver especificado no 
ambiente do sistema operacional para zona horária. Para obter informações 
adicionais deve ser consultada a Seção 8.5"

Em [5] está a documentação sobre o parâmetro para a versão 8.4.

A string deste parâmetro é o nome da zona horária, baseada na view 
"pg_timezone_names"

Então na view "pg_timezone_names"(ver [7]) você verá as zonas que podem ser 
utilizadas em "timezone".

[1]http://www.mail-archive.com/pgbr-geral@listas.postgresql.org.br/msg19770.html
[2]http://www.postgresql.org/docs/8.4/interactive/functions-datetime.html
[3]http://pgdocptbr.sourceforge.net/pg80/datatype-datetime.html
[4]http://pgdocptbr.sourceforge.net/pg80/runtime-config.html#GUC-TIMEZONE
[5]http://www.postgresql.org/docs/8.4/interactive/runtime-config-client.html#GUC-TIMEZONE
[6]http://www.postgresql.org/docs/8.4/interactive/datatype-datetime.html#DATATYPE-TIMEZONES
[7]http://www.postgresql.org/docs/8.4/interactive/view-pg-timezone-names.html

Marçal de Lima Hokama
---------------------
e-mail: mhok...@hotmail.com
http://www.twitter.com/mhokama                                    
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a