Problema na formatação usando o "SimpleDateFormat"

Olá estou com um problema que está dificil de atropela-lo:
Eu uso o Eclipse + JavaBeans + BD-Oracle

Eu tenho 2 campos Date em uma tabela Oracle (leo_dtturno & leo_dtreal) então criei um vetor e no momento de jogar as variáveis formatadas para o vetor da erro(Type mismatch: cannot convert from String to Date)

Um campo eu jogo o Formato (DD/MM/YYYY) outro campo eu jogo (dd/MM/yyyy HH:mm:ss)
Segue…

public Vector e tal..............

		try {
			Connection conexao = DriverManager.getConnection..........etc
			PreparedStatement sql = conexao.prepareStatement("SELECT leo_dtturno,leo_hrturno,leo_dtreal FROM leo_una_turno" +
					" order by leo_dtturno desc, leo_hrturno desc");

			ResultSet rs=sql.executeQuery();
			SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
			SimpleDateFormat formatador2 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
			while (rs.next()){
				Turno trn = new Turno ();
				Date dtgenerico =  new Date();
				Date dtgenerico2 =  new Date();
				dtgenerico = rs.getDate("leo_dtturno");
				String strDataTurno = formatador.format(dtgenerico);
				dtgenerico2 = rs.getTimestamp("leo_dtreal");/////JÁ USEI TODOS OS GETS E NÃO ADIANTOU....
				String strDataReal = formatador2.format(dtgenerico2);
				trn.leo_dtturno = strDataTurno;
				trn.leo_hrturno = rs.getString("leo_hrturno");
				trn.leo_dtreal = strDataTurno;///////AQUI 'DA O ERRO
				a.add(trn);
			}
			rs.close();
			conexao.close();

Galera dificil de entender porq com um está Ok e com o outro não pois os 2 campos na tabela são DATETME no Oracle

Cara só uma observação o campo no seu banco tem que estar com o mesmo tipo, ou seja, preste atenção se vc num tá querendo formatar date campo que é timestamp ou vice-versa.

Não use Date para campos de data do banco de dados prefira o Timestamp

private Timestamp seuCampo;
//get e set

setSeuCampo(new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(rs.getTimestamp("leo_dtreal")))

Eai cara… Cara sinceramente caso vc não consiga resolver este problema faz o seguinte traz as datas formatadas no proprio select. Trazendo as datas formatadas no proprio select vc evitaria consumo de memoria e ainda por cime teria menos problemas no seu codigo.
Exemplo:

SELECT TO_CHAR(leo_dtturno, ‘DD/MM/YYYY’) AS LEO_DTTURNO,
TO_CHAR(leo_dtreal, ‘DD/MM/YYYY HH24:MI:SS’) AS LEO_DTREAL
FROM TABELA

Trazendo assim sempre estes campo virão com as datas no formato que vc deseja…

Boa Sorte. :smiley:
T++

jimjr_ivan
Os dois campos são DateTime no Oracle só q um
e somente gravado a data e o Oracle deixa na boa e no vetor eu consigo trazer
o outro campo também é datetime só que está com a hora e em outras consultas eu consigo formatar usando o gettTimeStamp e a consulta vem DD/MM/YYYY hh:mm… isso q não entendi

tenta isso

Date data;
DateFormat sdf = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("pt", "BR"));
String dataS = sdf.format(data);

existem varios tipos:
e vc pode mudar no

DateFormat.??

??= LARGE, MEDIUM, SHORT…

tem um que tras o dia da semana outro com os segundos …
nao lembro qual…

isso é um modo
mas existem varios outros tbm

Ow tbm vc poderia fazer algo to tipo como criar um get e set para os seus respectivos campos(leo_dtturno & leo_dtreal) e fazer assim:

[code]/Converte data String para Date no formato brasileiro “dd/MM/yyyy”/
public String getLeoDtTurnoJDBC() {
try {
SimpleDateFormat format = new SimpleDateFormat(“dd/MM/yyyy”);
SimpleDateFormat formatjdbc = new SimpleDateFormat(“yyyy-MM-dd”);
return formatjdbc.format(format.parse(leoDtTurno));

    	} catch (Exception e) {
    		e.printStackTrace();
    		return "";
    	}
  }

public void setLeoDtTurno(String leoDtTurno) {
	this.leoDtTurno = leoDtTurno;
}

public void setLeoDtTurnoJDBC(String leoDtTurno) {
    try {
    		SimpleDateFormat formatjdbc = new SimpleDateFormat("yyyy-mm-dd");
    		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
    		this.leoDtTurno = format.format(formatjdbc.parse(leoDtTurno));
    	
    	} catch (Exception e) {
	      e.printStackTrace();
    	}
}

//ai para outro bean(leo_dtreal) vc faz a mesma coisa passando o formato q vc quer “dd/MM/yyyy HH:mm:ss)”, //ou vice-versa, sei lah.
[/code]
Boa sorte At+!

Pessoal,
Obrigado pelas Dicas eu resolvi meu problema.
Estava na formatação (dd/MM/yyyy HH:mm:ss) mudei o HH para minusculo.

eBarros :lol:: Eu ja havia criado os gets e sets paraos campos…Obrigado

tlink.k :lol:: Obrigado pela dica. Mais uma que poderei futuramente utilizar.

Schumacher: Eu já tentei usar no comando sql (TO_char) e me truxe o ano ‘0007’

Pedrosa :lol:: Eu fiz da maneira que vc me passou e o compilador me sugeriu q criasse como string também (veja abaixo) lembrando q antes de postar aqui eu havia criado os gets e sets dos campo entao eu criei com outro nome.

	private Date setLeo_dtreal_timestamp(String string) {
		// TODO Auto-generated method stub //<--------- (este comentário foi o Eclipse quem colocou)
		return null;
	}

	public Timestamp getLeo_dtreal_timestamp() {
		return leo_dtreal_timestamp;
	}

	public void setLeo_dtreal_timestamp(Timestamp leo_dtreal_timestamp) {
		this.leo_dtreal_timestamp = leo_dtreal_timestamp;
	}

Schumaker :lol:: consegui compilar e testei mas trouxe o campo ‘nulo’ no lugar da formatacao.
Mas mesmo assim Obrigado pela dica pois vai ser util para outros métodos.

Obrigado pessoal…é uma satisfação sempre bom contar com o GUJ