Converter o Timestamp armazenado no MySQL para JAVA

8 respostas
M

Pessoal, Boa Tarde !

Estou com um pepinão para resolver Hahahahaha…

Tenho uma data armazenada no Banco de Dados ( em formato Timestamp). Essa data foi inserida a partir de um script PHP que convertia a data do sistema em timestamp e gravava no Banco…

Agora é o seguinte…

Ao ler os registros e tentar converter: com o seguinte trecho de codigo

Date resultado = new Date(rs.getTimestamp("data").getTime());
System.out.println("Data:" + resultado.toString());

Retorna uma data errada…

no exemplo: Data:Thu Sep 04 23:06:00 BRT 2014

OUVI DIZER: que tem uma diferença do timestamp gerado do MySQL para o Java…
Agora… , como faço para resolver isso…

Precisava pegar ottimestamp armazenado na coluna data e converter certinho…

Galera, agradeço a força.

Bom fim de semana a todos.

Mateus

8 Respostas

thiago.correa

Mas você quer apresentar a data como!!! dd/mm/aaaa hh:mm:ss ???

M

Olá Thiago, tudo blz?

Olha, o formato pode ser dd/MM/yyyy

Mas o MAIOR problema é que a data está vindo ERRADA do BD… ou seja , naum é aquela data que postei anteriormente do ano de 2014 :?

Abraço,

Mateus

thiago.correa

mateus_dias:
Essa data foi inserida a partir de um script PHP que convertia a data do sistema em timestamp e gravava no Banco…

De repente não pode ter sido o próprio php que gerou a data errada?!
Testei aqui e funcionou legal! Veja se a data não está errada, é bem provavel que os dados tenham sido gravados errado!

M

Pois é Thiago…

Conferi e a data (no sistema em PHP que usa a mesma tabela) aparece corretamente :shock:

Caramba… E agora hehehe…
Abraço,

Mateus

thiago.correa

Como está data está no campo?!

A

Faz assim :

Date resultado = rs.getDate("data");
 System.out.println("Data:" + resultado.toString());
M

Bom vamos ao complicado…

  1. Precisei certificar que a data não está errada no BANCO, então, descobri um site que dado um Timestamp, mostra a data no padrão americano (e esta é a data que aparece no sistema em PHP e está certa) - fiz um select Max(data) para retornar o maior timestamp:
    [telefone removido]

http://www.developertutorials.com/tools/unix-timestamp-converter.php

No site retorna no padrao americano: 4/7/2006 4:22:06 PM

  1. Fiz um trecho de código com a data, manualmente, sem buscar na tabela no MySQL
long data = ([telefone removido]);
System.out.println(data);		
Date resultado = new Date(data);
System.out.println("Data: " + resultado.toString());

Retornou isso: Data: Wed Jan 14 02:53:46 BRT 1970

  1. O que é pior … com o acesso a dados pelo banco, no mesmo timestamp Retorna outra data diferente !
    Sat Sep 13 21:26:00 BRT 2014
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT Max(data)as data FROM Curso_acessos");

	        
if (stmt.execute("SELECT Max(data) as data FROM Curso_acessos")) {
       rs = stmt.getResultSet();
	            
       while(rs.next())
       {
Date resultado = new Date(rs.getTimestamp("data").getTime());
              	System.out.println("Data:" + resultado.toString());
         }
}

Thiago e Alexandre: que coisa hein !!!

E agora né…??

Abração pra vcs.

Mateus.

M

Pessoal, para tudo se dá um jeito.

Resolvi de uma outra forma… “já que a montanha não vai até maomé, maomé decidiu ir até a montanha hehehehe”

Existe uma função do MySQL que já transforma a data em timestamp para o formato que desejo trabalhar então segue um exemplo de uma query já transformando o Timestamp aí:

Select cod_usuario, from_unixtime(data) as data_acesso, cod_ferramenta from Curso_acessos where (cod_ferramenta != “”) order by data_acesso desc;

Abraço a todos,
Valeu pela força.

Mateus

Criado 7 de abril de 2006
Ultima resposta 10 de abr. de 2006
Respostas 8
Participantes 3