Problemas em recuperar campo data do banco

8 respostas
D

Pessoal, estou tendo problemas em recuperar campos de data do banco. Ocorre o seguinte quando tento recuperá-los, o programa me traz a data do seguinte formato:

2005-05-17 16:33:10.920

Sendo que eu precisaria trazê-la da seguinte forma:

17-05-2005
Estou fazendo da seguinte maneira para trazer os dados do banco:while (rs.next()){ Date data = rs.getDate("data"); Date datasolucao = rs.getDate("datasolucao"); Date datafechamento = rs.getDate("datafechamento"); out.println(data); out.println(datafechamento); out.println(datasolucao); }
O resultado dos “out.println” que estou fazendo são:

2005-05-17 16:33:10.920
2005-05-18 15:35:08.540
2005-05-18 15:38:20.320

Agradeço se alguém puder me ajudar.

8 Respostas

E

Tenta usar import java.text.DateFormat assim

Pega o local configurado no S.O. no caso Brasil então o formato da data é dd/mm/aaaa

Locale locale = Locale.getDefault();

O DateFormat.SHORT é o formato q pode ser com ou sem o dia da semana da uma olhada na documentação da classe DateFomate e locale é o local tipos de data para cada local

DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, locale); dt_entrada_aux = df.format(dt_entrada);

W

Tenta isso ai:

while (rs.next()){         
Date data = rs.getDate("data");
Date datasolucao = rs.getDate("datasolucao");
Date datafechamento = rs.getDate("datafechamento");

String formato = "dd/MM/yyyy"
SimpleDateFormat formatador = new SimpleDateFormat(formato);

String dia = formatador.format(data);
String diasolucao = formatador.format(datasolucao);
String diafechamento = formatador.format(datafechamento);

out.println(dia);
out.println(diasolucao);
out.println(diafechamento);
}

Testa ai eu acho que isso irá resolver seus problemas.

D

Valeu pessoal pela dica, funcionou. O que estou tentando fazer agora e que gostaria de que se possível me ajudassem é a trazer a data no formato dia/mes/ano hora:min:seg AM ou PM. Tipo:

6/7/2005 7:38:36 AM

Agradeço se puderem me dar uma ajuda.

D

Problemas é formatação de datas é a coisa mais comum de acontecer…
o correto seria vc pensar em uma classe utilitária para tratar isso…formatar a data de acordo com o formato que vc precisar no momento…
Por acaso eu tenho uma classe como essa pronta…

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class FormatHelper {
  private static FormatHelper instance = new FormatHelper();
  private SimpleDateFormat dataCompleta=new SimpleDateFormat("dd/MM/yyyy hh:mm");
  private SimpleDateFormat dataSimples=new SimpleDateFormat("dd/MM/yyyy");
  private SimpleDateFormat dataDatabase=new SimpleDateFormat("yyyy-MM-dd hh:mm");

  public static FormatHelper getInstance() {
    return instance;
  }
  private FormatHelper() {
  }
  public String fullDateFormat(java.util.Date data) {
    if(data==null || data.equals("")) return "";
    else return dataCompleta.format(data);
  }
  public String simpleDateFormat(java.util.Date data) {
    if(data==null || data.equals("")) return "";
    else return dataSimples.format(data);
  }
  public String databaseDateFormat(java.util.Date data) {
    if(data==null || data.equals("")) return "";
    else return dataDatabase.format(data);
  }
  public java.util.Date parseSimpleDate(String data) throws ParseException {
    if(data==null || data.equals(""))
      return null;
    else {
      return dataSimples.parse(data);
    }
  }
}

Como eu uso???

FormatHelper.getInstance().simpleDateFormat(objeto.getData())

Atenção…como vc pode ver a classe é singleton…portanto vc nunca vai dar um NEW nela…sempre vai usar a sua instancia como segue acima.
FormatHelper.getInstance().metodo

Qualquer dúvida é só postar!

[]'s

D
Desculpe minha ignorância Diana, mas se possível gostaria que me indicasse como posso fazer para utilizar este seu código dentro de meu programa .java
package Conexao_Novo;

import java.sql.*;
import java.math.BigDecimal;
import java.util.Date;

public class Conexao_teste_meuschamados{
    public static void main(String args[]){
        
        String odbc = "jdbc:odbc:helpdesk";
        String usuario = "dcarvalho";       
        
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection conn = DriverManager.getConnection(
                odbc, "helpdesk", "1234");
            Statement stmt = conn.createStatement();
 		   ResultSet rs = stmt.executeQuery("SELECT * FROM chamado_teste where usuario='"+usuario+"' order by cod_chamado desc");
 		   
 		   while (rs.next()){	           	
 		       	BigDecimal codchamado = rs.getBigDecimal("cod_chamado");
 		       	Date data = rs.getDate("data"); 		       	
 				String cod_tipochamado = rs.getString("tipochamado");
 				String cod_sistema = rs.getString("sistema");
 				String prioridade = rs.getString("prioridade");
 				String descricao = rs.getString("descricao");
 				String solucao = rs.getString("solucao");
 				Date datasolucao = rs.getDate("datasolucao");
 				Date datafechamento = rs.getDate("datafechamento");
 				String status = rs.getString("status"); 				
 				String resp = rs.getString("responsavel");
 				String nota = rs.getString("satisfacao");    
		           
 				System.out.println(codchamado);
 				System.out.println(data);
 				System.out.println(cod_tipochamado);
 				System.out.println(cod_sistema);
 				System.out.println(prioridade);	               
 				System.out.println(descricao);
 				System.out.println(datafechamento);
 				System.out.println(status);
 				System.out.println(resp);
 				System.out.println(nota);
		        System.out.println(datasolucao);
		        System.out.println(solucao);
	       } 
	           
		} catch (Exception e) { 
		    System.out.println("Não foi possível conectar ao banco" + e.getMessage()); 
		}
    }
}
Para que a data vinda do banco pegasse o formato dataCompleta. Agradeço se puderes me ajudar.
D

Caro colega…obviamente vc deve ter a classe utilitaria em algum pacote da sua aplicação…

e depois é só:

System.out.println(FormatHelper.getInstance().simpleDateFormat( 
datafechamento)); 
System.out.println(status); 
System.out.println(resp); 
System.out.println(nota); 
System.out.println(FormatHelper.getInstance().simpleDateFormat( 
datasolucao)); 
System.out.println(solucao);

[]'s

D

Diana, ocorre que como estou buscando os dados do banco, se busco os mesmos da seguinte forma:Date datasolucao = rs.getDate("datasolucao"); A data me é retornada da seguinte maneira:

07/06/2005
E assim não adianta eu pegar o seu código, pois não tenho a hora e os minutos para trabalhar, sendo que se utilizo:String datasolucao = rs.getString("datasolucao");A data me é retornada da seguinte maneira:
2005-05-16 14:55:41.177
Que seria a maneira ideal para ser utilizada em seu código, só que pelo fato de ser uma string, não consigo utilizar o seu
System.out.println(FormatHelper.getInstance().simpleDateFormat(
datafechamento));
Saberia me indicar como eu faria para resolver isto.

D

:roll:
Bom, acho que a idéia é vc olhar a classe utilitaria e adaptar ela para vc.

De qualquer forma, vc sempre pode “brincar” com a String retornada…

String data = new String("12/12/2005 12:25");
String out = data.substring(0,10);
String dt[]=out.split("/");
System.out.println(dt[0]+"/"+dt[1]+"/"+dt[2]);

:wink:

[]'s

Criado 7 de junho de 2005
Ultima resposta 8 de jun. de 2005
Respostas 8
Participantes 4