Ola estou executando um select no banco de dados e filtranto por um campo data.
select * from tabela where dia=‘2019-12-17’
o resultado no query browser sao todos os registros com a data de ontem.
Ai quando esse valor chega em tela a data que esta gravada como dia 17 aparece dia 16.
Estou usando JdbcTemplate. E la no resultset quando faco um getDate ja aparece com um dia a menos.
@override
public NotaFiscalEmitidaDTO mapRow(ResultSet rs, int rowNum) throws SQLException {
NotaFiscalEmitidaDTO nota = new NotaFiscalEmitidaDTO();
nota.setId(rs.getLong("idvenda_nfce"));
nota.setLoja(rs.getLong("loja"));
nota.setSerie(rs.getString("serie"));
nota.setNumero(rs.getLong("num_doc"));
nota.setChaveNfe(rs.getString("chv_nfce"));
/* tanto faz colocar assim ou fazer apenas o getDate()
o resultado ja vem com um dia a menos.*/
nota.setDataEmissao(rs.getDate("dt_doc").toLocalDate());
nota.setExisteXML(rs.getBoolean("arquivado"));
return nota;
}
Acho que voce nao entendeu, eu nao estou em duvida em como fazer uma consulta no banco de dados. Isso ai foi um exemplo. A consulta funciona para filtrar os dados de um dia. Mas quando eu mostro dos dados da consulta, a data aparece com um dia a menos quando eu faco
resultSet.getDate("dia").toLocalDate();
// ou
resultSet.getDate("dia");
sendo assim, minha duvida é porque no banco de dados esta um dia, e no resultado da consulta usando SpringJdbcTemplate aparece um dia menor.
@SpringBootApplication
public class SopaApplication {
private static ApplicationContext APPLICATION_CONTEXT;
public static void main(String[] args) {
APPLICATION_CONTEXT = SpringApplication.run(SopaApplication.class, args);
}
public static <T> T getBean(Class<T> requiredType) {
return APPLICATION_CONTEXT.getBean(requiredType);
}
@PostConstruct
public void init() {
//adicionado esse metodo para definir um timezone, corrigindo a hora
// LocalDateTime.now()
TimeZone.setDefault(TimeZone.getTimeZone("America/Recife"));
}
na na string de conexão com o banco de dados foi feito essa alteração tambem colocando o timezone, assim agora a data retornada vem com o dia certo: