Data americano para pt-br

Olá, existe no MYSQL Workbench algum comando ou opção que eu mude as colunas da data no formato yyyy-MM-dd para dd/MM/yyyy, pois quando conseguir usar no Java o Statement no formato (UK), o banco de dados deixou como campo “null”.
Existiria alguma forma dele aceitar?

Neste caso eu faria o seguinte. Crie o seu controller, service e repository.

em service instancie uma classe DTO e converta o valor conforme abaixo. para mostrar o correto para o usuario brasileiro e faça o inverso para salvar no banco.

ExemploDTO dto = new ExemploDTO ();

LocalDateTime inicio = item.getDataInicial();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“dd/MM/yyyy”);
String iniciado = inicio.format(formatter);
dto.setDataInicial(iniciado);

voce nao precisa se preocupar com isso. Voce pode usar a propria programacao para corrigir isso.

Voce esta usando spring? Se estiver basta usar um formatador que ele cuida do resto.

public abstract class TemporalFormatter<T extends Temporal> implements Formatter<T> {

	@Override
	public String print(T temporal, Locale locale) {
		DateTimeFormatter formatter = getDateTimeFormatter(locale);
		return formatter.format(temporal);
	}

	@Override
	public T parse(String text, Locale locale) throws ParseException {
		DateTimeFormatter formatter = getDateTimeFormatter(locale);
		return parse(text, formatter);
	}
	
	private DateTimeFormatter getDateTimeFormatter(Locale locale) {
		return DateTimeFormatter.ofPattern(pattern(locale));
	}
	
	public abstract String pattern(Locale locale);
	
	public abstract T parse(String text, DateTimeFormatter formatter);
}
@Component
public class LocalDateFormatter extends TemporalFormatter<LocalDate> {
	
	@Autowired
	private Environment env;

	@Override
	public String pattern(Locale locale) {
		return env.getProperty("localdate.format-" + locale, "yyyy-MM-dd");
	}

	@Override
	public LocalDate parse(String text, DateTimeFormatter formatter) {
		return LocalDate.parse(text, formatter);
	}	
}

assim sempre que voce pegar uma data de um campo ou pegar uma data do banco e for exibir na tela a data ficara formatada corretamente.

para filtrar no banco de dados e pegar voce faz assim:
usando spring jdbctemplate

@Override
	protected RowMapper<Cotacao> rowMapper() {
		return new RowMapper<Cotacao>() {

			@Override
			public Cotacao mapRow(ResultSet rs, int rowNum) throws SQLException {
				Cotacao cotacao = new Cotacao();
				cotacao.setId(rs.getLong("idcotacao"));
				cotacao.setEmpresa(new Empresa(rs.getLong("idloja")));
				cotacao.setDataInicial(rs.getDate("datainicio").toLocalDate());
				cotacao.setDataFinal(rs.getDate("datafinal").toLocalDate());
				cotacao.setSituacao(rs.getString("situacao"));
				cotacao.setDescricao(rs.getString("descricao"));
				return cotacao;
			}
		};
	}

pesquisando do banco de dados

public Page<Cotacao> findAll(Pageable pageable, CotacaoFilter cotacaoFilter) {
		String sql = "SELECT * FROM cotacao " 
				+ " WHERE (datainicio >= :datainicio OR :datainicio is null) "
				+ " AND (datafinal <= :datafinal OR :datafinal is null) " 
				+ " AND (situacao LIKE CONCAT('%', :situacao, '%') OR :situacao is null) "
				+ " ORDER BY idcotacao DESC " 
				+ " limit :page, :size";
		MapSqlParameterSource source = new MapSqlParameterSource();
		source.addValue("page", pageable.getPageNumber() * pageable.getPageSize());
		source.addValue("size", pageable.getPageSize());
		source.addValue("datainicio", cotacaoFilter.getDataInicial());
		source.addValue("datafinal", cotacaoFilter.getDataFinal());
		source.addValue("situacao", cotacaoFilter.getSituacao());
		return new PageImpl<>(namedQuery().query(sql, source, rowMapper()), pageable, getTotalRegistros(cotacaoFilter));
	}

e a classe filter para voce ver, eh uma classe simples

public class CotacaoFilter {

	private LocalDate dataInicial = null;
	private LocalDate dataFinal = null;
	private String situacao = null;


	public LocalDate getDataInicial() {
		return dataInicial;
	}

	public void setDataInicial(LocalDate dataInicial) {
		this.dataInicial = dataInicial;
	}

	public LocalDate getDataFinal() {
		return dataFinal;
	}

	public void setDataFinal(LocalDate dataFinal) {
		this.dataFinal = dataFinal;
	}

	public String getSituacao() {
		return situacao;
	}

	public void setSituacao(String situacao) {
		this.situacao = situacao;
	}

}

o proprio spring lida com a formatacao devido as classes que formatam a data

agora se voce estiver usando na mao. voce vai ter que pegar a data formatada do banco de dados usando a funcao date_format(coluna_de_data, ‘%d/%M/%y’), e usar no PreparedStatement o javax.sql.Date.

Se quiser colocar o seu codigo, fica mais facil de ajudar.

Por enquanto estou utilizando o jdbc para depois utilizar a programação spring:
code
String dtn = “19/02/1971”;
int idade = id.calcularIdade(dtn);
String dtNasc = “19/02/1971”;
DateTimeFormatter formato = DateTimeFormatter.ofPattern(“dd/MM/yyyy”,Locale.UK);
LocalDate data = LocalDate.parse(dtNasc, formato);

	convidado.setDataNascimento(data); //

//code
//Arquivo Dao
stmt.setDate(4, convidado.getDataNascimento());
//
O Tipo de dado no modelo é do tipo date.

Alguém teria mais alguma outra sugestão?

Eu executei o teste e o problema esta com o Java, onde emulei a resposta pelo console e ficou em resposta como “null”, da mesma forma que ficou no Banco de Dados…lógico, existe alguma outra forma de que o formato apareça como dd/MM/yyyy ou do formato que o MySQL interprete?