Hora,minuto e segundos no banco de dados

7 respostas
F

Olá Gujeiros,

Tchudo bom?!

Estou com um problema, estou gravando no banco de dados o getDate() pelo Sql, como todos devem saber o valor de um campo Datetime é desse jeito: 31/10/2012 15:16:54, precisa ser esse campo, pois irei criar relatórios no sistema pela data, só que o campo que eu estou usando só é definido por HH:mm:ss, ou seja, horas, minutos e segundos, na minha tela eu faço a varredura com o cursor ResultSet do JDBC, porém como eu faria para pegar o campo DateTime e transformá-lo em HH:mm:ss, aí dei uma pesquisada na net e consegui criar o método que já tem a varredura e estou usando 2 classe: SimpleDateFormat e DateFormat, após algumas horas estudando criei o método, só que ele não está rodando no campo de horas o que eu devo ter feito de errado?!

public int avancarPedido() {
		try {
			
				if(!resultado.wasNull()) {
					resultado.first();
					if(ehPrimeiro == true){
						//InterfacePedidos.linha = resultado.getInt("cod_Pedido");
						resultado.relative(InterfacePedidos.linha-1);
						
					}
					else{ 
						
						System.out.println("linha lol: " + InterfacePedidos.linha);
						resultado.relative(InterfacePedidos.linha);
					}
					resultado.next();
					InterfacePedidos.tPed.setText(String.valueOf(resultado.getInt("cod_Pedido")));
					InterfacePedidos.tPlaca.setText(resultado.getString("placa"));
					InterfacePedidos.tFuncionario.setText(String.valueOf(resultado.getInt("cod_func")));
					InterfacePedidos.tnFunc.setText(resultado.getString("nome_func"));
					InterfacePedidos.area.setText(resultado.getString("obs"));
					
					// *******Essa parte do código que é importante*****
					DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT,Locale.FRANCE);
					SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
					String h01 = resultado.getString("hor_inicio");
					String h02 = resultado.getString("hor_termino");
					
				
					
				//	System.out.println("h01: "+h01);
				 
					try {
					Date ho01 = (Date) sdf.parse(h01);
					Date ho02 = (Date) sdf.parse(h02);
						hpri = sdf.format(ho01);
						hseg = sdf.format(ho02);
						System.out.println("h01: " + hpri);
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.getMessage();
					}
					
				// ***********Até aqui**********************
					InterfacePedidos.texto03.setText(resultado.getString("cod_serviço"));
					InterfacePedidos.texto04.setText(String.valueOf(resultado.getFloat("valor_desc")));
					InterfacePedidos.hora01.setText(hpri);
					InterfacePedidos.hora02.setText(hseg);
					rows = InterfacePedidos.linha + 1;
					System.out.println("rows: " + rows);
					System.out.println("Linha: " + resultado.getInt("cod_Pedido"));
					//System.out.println("Row: " + rows);
				}
				
				if(ehPrimeiro == true) {
					ehPrimeiro = false;
					rows = 0;
				}
			
		
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog(null,e.getMessage());
			
		}
	
	return rows;
	}

abraço,

7 Respostas

Rodrigo_Sasaki

Pra que duplicar seu tópico? Você poderia ter respondido no seu tópico antigo, visto que é o mesmo problema.

http://guj.com.br/java/286390-horaminuto-e-segundos-no-banco-de-dados

Agora em relação ao seu problema, você pode ter 2 DateFormats diferentes, porém tem que configurar o padrão corretamente, na documentação da classe SimpleDateFormat tem uma explicação bem completa e muitos exemplos.

Outra opção é trabalhar diretamente na String, podendo usar regex ou algo do tipo

F

Então, o que eu não estou conseguindo é achar no meu código o erro, eu já li sobre o DateFormat e o SimpleDateFormat, quando executo o meu programa não aparece nada, o que pode estar acontecendo?!

Rodrigo_Sasaki

No seu catch você não faz nada… por isso não aparece o erro, troque de e.getMessage(); para e.printStackTrace();

F

mas o e.getMessage() ele mostra o erro, é que com esse código acaba não entrando no catch da exceção, porém não aparece o valor na caixa de texto.

abraço,

F

Foi malz, coloquei o e.printStackTrace() e deu uma exceção do tipo: Unparseable date: “2012-10-31 15:16:54.197”

W

Então, se você tem uma string “2012-10-31 15:16:54.197” como quer que o DataFormat a entenda se você disse que o formato dela é “HH:mm:ss”?

Não precisa aplicar um cast nestas linhas porque parse já retorna Date (Java):

Date ho01 = (Date) sdf.parse(h01);  
                    Date ho02 = (Date) sdf.parse(h02);

wiliamps

F

Consegui vou explicar essa parte do código para quem tiver dúvidas…

String h01 = resultado.getString("hor_inicio");
					String h02 = resultado.getString("hor_termino");
					
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
					SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");
					System.out.println("h01Retro: "+h01);
					System.out.println("h02Retro: "+h02);
				 
					try {
					Date hol01 = (Date) sdf.parse(h01);
					Date hol02 = (Date) sdf.parse(h02);
						hpri = sdf2.format(hol01);
						hseg = sdf2.format(hol02);
						System.out.println("h01Retro: " + hpri);
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.getMessage();
						e.printStackTrace();
					}

O primeiro SimpleDateFormat tem que ser o padrão seu, aonde vc vai fazer um parse para transformar String em Date e aí vc utiliza o segundo SimpleDateFormat para formatar para esse novo padrão.

abraço,

Criado 4 de novembro de 2012
Ultima resposta 6 de nov. de 2012
Respostas 7
Participantes 3