Tratamento de Data e timezone (Batendo o desespero!)

8 respostas
barcellosrod

Bom dia galera do GUJ, estou precisando de uma forcinha de vcs…

Bom, meu problema é o seguinte:
Quando realizo uma query diretamente no banco de dados, visando buscar arquivos do dia 16, a query me retorna os dois registros exatamente como deve ser.
Porem quando realizo a mesma pesquisa a partir da maquina cliente, a query me retorna dois registros, um com data do dia 16, 6 horas da manha e outro do dia 15, 21:30 horas da noite, visto que o timezone da maquina cliente está setado automaticamente pelo windows para gmt -3, horario de brasilia.

Já testei de tudo, alterando timezone na maquina cliente, adiantando o relogio, porem nao surte efeito, pois mesmo que a hora se altere, retornara o mesmo registro do dia 15 (que nao deveria aparecer) na pesquisa do dia 16.
Timezone local = GMT -3
Timezone do host da aplicação = BRST
Timezone do banco de dados = ajustado manualmente pelo linux

Por favor, se alguem tiver alguma ideia de como corrigor este problema, eu agradeço;

Att;

Rodrigo B.

8 Respostas

abelgomes

esse sistema é desktop? posta ai o codigo que vc pega a data do sistema…

barcellosrod

Bom, a aplicação é desktop e utilizada na rede;

O campo data é setado como date(‘now’) atraves da query

" INSERT into tabela (xxx, xxx,xxx , xxx ,xxxxxxxx , xxx ,xxx, xxxxxx) VALUES  (date('now'),?,?,?,?,?,?,?,?,?)";

banco de dados Ingres

É utilizado um componente JDataPicker par a o usuario informar a data da pesquisa da seguinte forma

filtro.setData(view.getJXDatePicker().getDate());

onde filtro é uma variavel que contem um atributo date, e a pesquisa é realizada da seguinte forma

select * from tabela (campo  >= date(?) AND campo < (date(?) + '1day'))

onde o “?” é substituido pelo argumento setado no atributo filtro…

Galera, muito obrigado e fico no aguardo…

barcellosrod

Exemplificando:

Pesquisa realizada diretamento no console do banco retorna os dados corretos
16.12.2008 11:55:17 - reg:325
16.12.2008 21:26:04 - reg:341

Pesquisa realizada diretamento na maquina cliente trazendo os dados errados
15.12.2008 21:28:04 - reg:311
16.12.2008 11:55:17 - reg:325

Fico no aguardo galera e muito obrigado!!!

barcellosrod

Minha dúvida é como suprir este erro causado pelo timezone que subtrai 3 horas dos dados que eu informo, como por exemplo se a pesquisa é para buscar todos os registros do dia 16, ela esta me retornando erroneamente todos os registros do dia 15 a partir das 21horas ate as 21horas do dia 16 sendo que o correto seria todos do dia 16 das 00horas até as 23:59…

Galera se alguem tiver alguma ideia, qualquer que seja eu agradeço!!!

abelgomes

Veja qual o time zone da maquina servidor…e na hora da busca seta o timezone no seu codigo :wink: igual ao do servidor…

barcellosrod

O timezone setado no servidor é o seguinte: GRNLDST com a hora sendo a mesma das estações, e as estações estao com o timezone GMT -3…
Pedi para listar todos os timezones disponiveis por meio do metodo TimeZone.getAvailableIDs() e nao encontrei nenhum com o nome igual. Qual seria similar ao citado???

Muito obrigado pessoal, até o momento!!!

Leandro_Vecchi

Isso aqui serviria para alguam coias?

SimpleTimeZone timezone = new SimpleTimeZone(-4 * 60 * 60 * 1000, "Brazil/West"); TimeZone.setDefault(timezone);

barcellosrod

E ae galera, muito obrigado pela ajuda dada até o momento!!!

Acabei de testar o solução proposta pelo nobre colega, porém não obtive exito…

Posso colocar qualquer combinação de fuso, que a hora é alterada porém os registros de retorno permanecem os mesmos…:frowning:
Gostaria de salientar minha impossibilidade de alterar o Timezone no servidor, que é GRNLDST, entretanto, qualquer Timezone que eu coloque na aplicação altera a hora dos registros de retorno, porem nao altera os registros retornados, galera, to frustrado…

Galera, se alguem tiver alguma ideia, qualquer que seja, será muito bem vinda!!!

Criado 22 de dezembro de 2008
Ultima resposta 23 de dez. de 2008
Respostas 8
Participantes 3