Pessoal no meu banco tem uma coluna chamada data e o mesmo queria quando a cada cadastro dos valores a data atual do sistema fosse no momento do cadastro fiz a formatação mas não sai no banco.
Pq vc não coloca o valor padrão do campo data no seu banco como uma função para pegar a data atual (ex no postgres Now()) e seta o campo como “Not Null”, nesse caso qdo vc for inserir um valor e quiser a data atual basta deixá-lo em branco.
Se não for possível, tente verificar a formatação do campo q vc está inserindo no banco ou poste o erro e o banco q vc está usando.
freakazoid
A formatação do tipo de dado DATE pode ser alterada através da ferramenta que esta utilizando.
Caso o seu SGBD seja ORACLE o comando abaixo pode ser utilizado após a sessão do DB ter sido iniciada:
Lembrando que para tal é necessário a permissão de “RESOURCE”.
Outra opção é formatar a data a partir da função TO_CHAR dentro do seu select. Segue exemplo:
SELECTTO_CHAR(SYSDATE,'dd/MM/yyyy hh24:mi:ss');
Abs!
sergiotaborda
carlos nascimento:
Pessoal no meu banco tem uma coluna chamada data e o mesmo queria quando a cada cadastro dos valores a data atual do sistema fosse no momento do cadastro fiz a formatação mas não sai no banco.
Vou postar o código para vcs entender melhor.
Vc não está persistindo a variável "data". compare
statement.setDouble(1,credcard.getValorCartao());statement.setDouble(2,credcard.getValorLiquido());Datedata=newDate(); // não precisa do System, o Date sabe fazer isso sozinhostatement.setDate(3,data); // não precisa formatar statement.executeUpdate();
Pessoal no meu banco tem uma coluna chamada data e o mesmo queria quando a cada cadastro dos valores a data atual do sistema fosse no momento do cadastro fiz a formatação mas não sai no banco.
Vou postar o código para vcs entender melhor.
Vc não está persistindo a variável "data". compare
statement.setDouble(1,credcard.getValorCartao());statement.setDouble(2,credcard.getValorLiquido());Datedata=newDate(); // não precisa do System, o Date sabe fazer isso sozinhostatement.setDate(3,data); // não precisa formatar statement.executeUpdate();
freakazoid
Poste o código que vc fez as alterações. Provavelmente é algum pequeno detalhe que passou despercebido.
cristiano_matos
Tenta o que segue abaixo.
carlos nascimento:
statement.setDouble(1,credcard.getValorCartao());statement.setDouble(2,credcard.getValorLiquido());Datedata=newDate(System.currentTimeMillis());SimpleDateFormatformataData=newSimpleDateFormat("dd-mm-yyyy");formataData.format(data);// retira essa linha --statement.setDate(3,credcard.getData());// retire essa linha++statement.setDate(3,formataData.format(data));// inclui essa linha statement.executeUpdate();
Geralmente os bancos aceitam data/hora como String
carlos_nascimento
Oi!!!
Tá pegando a data a há hora não??
cristiano matos:
Tenta o que segue abaixo.
carlos nascimento:
statement.setDouble(1,credcard.getValorCartao());statement.setDouble(2,credcard.getValorLiquido());Datedata=newDate(System.currentTimeMillis());SimpleDateFormatformataData=newSimpleDateFormat("dd-mm-yyyy");formataData.format(data);// retira essa linha --statement.setDate(3,credcard.getData());// retire essa linha++statement.setDate(3,formataData.format(data));// inclui essa linha statement.executeUpdate();
freakazoid
Como o sergiotaborda citou, é inútil formatar a data para fazer a persistência. O banco vai grava um dado do tipo DATE e não uma String.
Dentro do DATE constam todos os dados relacionados a data - dia, mês, ano, hora, minuto, segundo e milésimo.
Se esta sentindo falta de ver a hora quando faz um select no seu banco de dados é porque provavelmente a forma de exibição não esta contemplando o horário. Aí cada banco tem um comando especifico para ajustar a exibição, eu te mandei um exemplo no Oracle.
Caso a necessidade seja gerar um relatório direto do banco você ainda pode formatar a data usando o nosso amigo TO_CHAR.
Armazene a data no DB, e para exibir o horário utilize o SimpleDateFormat como já foi citado.
Abs!
carlos_nascimento
Blz, mas o código tá desse geito:
Datedata=newDate(System.currentTimeMillis());SimpleDateFormatformataData=newSimpleDateFormat("dd-mm-yyyy, HH:mm:ss");--statement.setDate(3,credcard.getData());++statement.setDate(3,formataData.format(data));// inclui essa linha statement.executeUpdate();
E desse geito está mostrando a data correta mas a hora mostra assim 00:00:00
freakazoid:
Como o sergiotaborda citou, é inútil formatar a data para fazer a persistência. O banco vai grava um dado do tipo DATE e não uma String.
Dentro do DATE constam todos os dados relacionados a data - dia, mês, ano, hora, minuto, segundo e milésimo.
Se esta sentindo falta de ver a hora quando faz um select no seu banco de dados é porque provavelmente a forma de exibição não esta contemplando o horário. Aí cada banco tem um comando especifico para ajustar a exibição, eu te mandei um exemplo no Oracle.
Caso a necessidade seja gerar um relatório direto do banco você ainda pode formatar a data usando o nosso amigo TO_CHAR.
Armazene a data no DB, e para exibir o horário utilize o SimpleDateFormat como já foi citado.
Abs!
carlos_nascimento
O meu CGBD é o MYSQL, serio o mesmo comando???
freakazoid:
A formatação do tipo de dado DATE pode ser alterada através da ferramenta que esta utilizando.
Caso o seu SGBD seja ORACLE o comando abaixo pode ser utilizado após a sessão do DB ter sido iniciada:
Lembrando que para tal é necessário a permissão de “RESOURCE”.
Outra opção é formatar a data a partir da função TO_CHAR dentro do seu select. Segue exemplo:
SELECTTO_CHAR(SYSDATE,'dd/MM/yyyy hh24:mi:ss');
Abs!
freakazoid
Datedata=newDate(System.currentTimeMillis());System.out.println(data.toString());//------> Desta forma a saída fica assim: Fri Mar 08 15:08:24 GMT-03:00 2013statement.setDate(3,data);
Pessoal no meu banco tem uma coluna chamada data e o mesmo queria quando a cada cadastro dos valores a data atual do sistema fosse no momento do cadastro fiz a formatação mas não sai no banco.
Vou postar o código para vcs entender melhor.
Vc não está persistindo a variável "data". compare
statement.setDouble(1,credcard.getValorCartao());statement.setDouble(2,credcard.getValorLiquido());Datedata=newDate(); // não precisa do System, o Date sabe fazer isso sozinhostatement.setDate(3,data); // não precisa formatar statement.executeUpdate();
Deu erro ao voce dar new Date() ????? Qual JDK/JRE voce usa ?
pmlm
Qualquer um, desde que não faça o import!
R
rof20004
java.lang.RuntimeException: Uncompilable source code - no suitable constructor found for Date()
O erro ta relacionado ao construtor.
freakazoid
Vc esta utilizando java.sql.Date ou java.util.Date???
R
rof20004
freakazoid:
Vc esta utilizando java.sql.Date ou java.util.Date???
Isso! boa pergunta.
freakazoid
rof20004:
freakazoid:
Vc esta utilizando java.sql.Date ou java.util.Date???
Isso! boa pergunta.
Sempre dou preferencia para o java.util.Date e para realizar cálculos uso o Calendar.
freakazoid
Outra coisa importante!! Se você formatar a data com a mascara “dd-mm-yyyy” vai zerar o hora : minuto : segundo.
Resumindo: formate a data apenas para mostrar ao usuário final.