Obter uma data (do banco oracle) e exibi-la "formatada"

8 respostas
I

Olá para todos…
Alguém por favor me ajudar…

Cansei de procurar e tentar resolve sozinho com vários exemplos. Por isso resolvi postar.

Gostaria de saber como faço para formatar um campo obtido em select do banco de dados que foi “setado” para o atributo dta_nascimento_pessoa.

se eu faço isso:

System.out.println("Data Nascimento: " + pessoa.getDta_nascimento_pessoa());

ele retorna assim:

Data de Nascimento: 1984-01-15 00:00:00.0

Gostaria que fosse mostrado apenas desta forma:
Data de Nascimento: 15/01/1984

Isso está no main, só pra teste. Fiz a aplicação usando DAO.

8 Respostas

T

É só você criar um formatador pra data…

SimpleDateFormat dataFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.println("Data Nascimento: " + dataFormat.format(pessoa.getDta_nascimento_pessoa()));

Pra funcionar o getDta_nascimento_pessoa() tem que retornar um date

Anime

Oi iamthelegend,

Já tive esse problema,tentei de várias maneiras e nada deu certo,só consegui quando mudei o tipo de campo no BD de data para varchar… :roll:

I

valeu pelas ajudas.

eu já havia tentando usar esse SimpleDateFormat, mas me da o seguinte erro:

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date

o meu atributo “Dta_nascimento_pessoa” esta como string. É isso mesmo?

Anime, mas se eu mudar a coluna para varchar2 vou me complicar para fazer os select’s, não?

Eric_Yuzo

Qual o tipo de retorno do método “pessoa.getDta_nascimento_pessoa()”?

Anime

Não se vc mudar o tipo de retorno também,pelo menos no meu caso deu certo… :wink:

T

Eu acho que a gente deve ta falando de coisas diferentes… trabalhar com datas em Java/oracle é bem simples

public static void main(String[] args) {
		Connection oracle = new Conexao().getConection();
		//Conexao status = new Conexao();
		//System.out.println(status.getStatus(oracle));
		try {
			PreparedStatement pstm = oracle.prepareStatement("Select usuario.data_nascimento from usuario where usuario.nome = ?");
			pstm.setString(1, "João");
			
			ResultSet rs = pstm.executeQuery();
			
			rs.next();
			
			Date data = null;			
			data = rs.getDate("data_nascimento");
			
			SimpleDateFormat dataFormat = new SimpleDateFormat("dd/MM/yyyy");
			
			System.out.println(dataFormat.format(data));
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		
	}

Lembrando que pra funcionar o se metodo getDataNascimento tem que retornar um Date e não uma String

Anime

tiago1988:
Eu acho que a gente deve ta falando de coisas diferentes… trabalhar com datas em Java/oracle é bem simples

public static void main(String[] args) {
		Connection oracle = new Conexao().getConection();
		//Conexao status = new Conexao();
		//System.out.println(status.getStatus(oracle));
		try {
			PreparedStatement pstm = oracle.prepareStatement("Select usuario.data_nascimento from usuario where usuario.nome = ?");
			pstm.setString(1, "João");
			
			ResultSet rs = pstm.executeQuery();
			
			rs.next();
			
			Date data = null;			
			data = rs.getDate("data_nascimento");
			
			SimpleDateFormat dataFormat = new SimpleDateFormat("dd/MM/yyyy");
			
			System.out.println(dataFormat.format(data));
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		
	}

Lembrando que pra funcionar o se metodo getDataNascimento tem que retornar um Date e não uma String

Oi tiago1988,

Realmente o meu banco não era oracle,mas segui todos os procedimentos corretos e sempre retornava a data no formato americano… :roll:

I

Obrigado a todos pelas dicas…

segui o exemplo do anime, dei uma pensada e encaixei na minha app.

coloquei isso no PessoaDao:

Date data = null;
            data = rs.getDate("dta_nascimento_pessoa");
            SimpleDateFormat dataFormat = new SimpleDateFormat("dd/MM/yyyy");
            p1.setDta_nascimento_pessoa(dataFormat.format(data));

Isto esta dentro do meu List de select que busca todos as colunas do banco de dados.

Como essa classe fica entre a app e o banco, não preciso me preocupar mais com a formatação da data, pois posso obter o atributo de qualquer lugar que ele já vai vir formatado.

classe main…

System.out.println("Data Nascimento: " + pessoa.getDta_nascimento_pessoa());

Exibiu mesmo como eu pretendia.
Muito obrigado a todos.

Abraços.

Criado 15 de novembro de 2010
Ultima resposta 17 de nov. de 2010
Respostas 8
Participantes 4