Bom dia, gostaria de saber o motivo dessa data estar vindo errada.
No SQL Server 2008 R2, tenho uma coluna do formato “date”, insiro um registro com a data, por exemplo: “2011-09-30”, se faço um select ele me retorna certo a data.
Já no java quando faço um getDate() do ResultSet, ele me retorna a data “2011-09-28”, sempre com dois dias anteriores a minha data inserida, já fiz testes com outras datas e mesmo assim vem errado.
Alguém sabe o pq???
Obs.: no getColumnClassName do ResultSetMetaData, vejo se é igual ao “java.sql.Date”.
Na linha 17 está o “erro”, quando tento adicionar na List.
Obrigado!
T
thiago_bhe
Olá amigo, estava com o mesmo problema que voce, e lendo algusn artigos do pessoal do PHP mesmo… parece que há uma possibilidade de ser algu proximo ao TimeZone do Banco com o Sitema…
Mas nao vou afirmar, tmb nao obtive sucessos…
Minha solução foi somar 2 dias ao meu ResultSet… é meio pedreiro(srsrs) mas nao altera em nada no seu programa, uma vez que esse erro so acontece nas pesquisas.
seguem o meu exemplo ae pra vc
espero ter ajudado, e desculpa qualquer coisa, tambem nao sou expert em Java
B
Bruno_Laturner
Pelo que andei lendo, na época do COM e a comunicação inter-processos OLE, as datas do sistema começavam em 30/12/1899, e utilizando o SQL Server Integration Services para migrar esses dados para SQL Server, o tipo de dado da coluna fica como DT_DATE.
O java.sql.Date espera uma data começando em 01/01/1970.
A solução seria usar uma query em T-SQL do SQL Server (poder ser no próprio SELECT FROM) para converter o tipo para o formato certo, antes de chegar no Java.
Rodolfodj
Me deparei com o mesmo problema.
Como ficaria este select por T-SQL?? O formato do campo no banco é Date e já tentei recuperá-lo com getDate(1), getDate(1, Calendar.getInstance()) e getString(1)
O select fiz de 2 formas:
SELECT CONVERT(datetime2, SEND_DAY) FROM types WHERE ID_TYPE = 3
SELECT send_day FROM types WHERE ID_TYPE = 3
Estou tentando fugir da solução de adicionar +2 ao valor…
drsmachado
Rodolfodj:
Me deparei com o mesmo problema.
Como ficaria este select por T-SQL?? O formato do campo no banco é Date e já tentei recuperá-lo com getDate(1), getDate(1, Calendar.getInstance()) e getString(1)
O select fiz de 2 formas:
SELECT CONVERT(datetime2, SEND_DAY) FROM types WHERE ID_TYPE = 3
SELECT send_day FROM types WHERE ID_TYPE = 3
Estou tentando fugir da solução de adicionar +2 ao valor…
Rodolfodj, quando for “atribuir” algo a um tópico, verifique a data do último comentário. Veja que este é de 2011. Seria mais adequado ter aberto uma nova discussão.
Qual banco de dados está utilizando?
Rodolfodj
drsmachado:
Rodolfodj, quando for “atribuir” algo a um tópico, verifique a data do último comentário. Veja que este é de 2011. Seria mais adequado ter aberto uma nova discussão.
Qual banco de dados está utilizando?
Caro drsmachado,
estava justamente com esta dúvida antes de postar neste tópico, se criava um novo ou reaproveitava um já aberto.
A versão do banco é SQL Server 2008.
drsmachado
Pois é, é que tópicos antigos nem sempre são revisitados por quem os abriu e/ou o pessoal meio que ignora.
Enfim, mesmo com getString está vindo errado? Se for, pode ser problema do driver.
Confesso que é uma situação anormal pra mim.
Rodolfodj
Sim, mesmo com o getString a data vêm errada.
Rodolfodj
Atualizei o jar sqljdbc para a versão 4-4.0 e o problema parou de ocorrer.
Rodolfodj
Atualizei o sqljdbc para a versão 4-4.0 e o problema foi corrigido.