/ / Como salvar data e hora atuais no banco de dados usando java? - java, sql, java-ee, datetime

Como salvar data e hora atuais no banco de dados usando java? - java, sql, java-ee, datetime

Eu estou usando o seguinte código para obter a data e hora atual, mas a saída não é o que eu estou esperando e eu não posso salvá-lo no banco de dados.

Saída >> atual: terça-feira, 05 de maio 09:58:26 EST 2013

Saída esperada >> atual: 2013-03-05 9:58:26

 .....{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
try {
System.out.println("current: " +parseFormat.parse(dateFormat.format(date)));
return parseFormat.parse(dateFormat.format(date));
} catch (ParseException ex) {
Logger.getLogger(ConstructionModel.class.getName()).log(Level.SEVERE, null, ex);
}
return date;
}
......

ps.setDate(....) <<< failed

Base de dados

 name   type
mydate Date

Respostas:

2 para resposta № 1

Você precisa usar o timestamp sql para salvar no banco de dados. Converta seu java.util.Date para java.sql.Timestamp:

ps.setTimestamp(new java.sql.Timestamp(myDate.getTime()));

3 para resposta № 2

Você não precisa analisar antes de formatar:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date = new Date();

String frmtdDate = dateFormat.format(date);

System.out.println("frmtdDate: " + frmtdDate);

No entanto, se você estiver tentando ajustar a data em alguma instrução DB, você não deve fazê-lo na forma de texto; em vez disso, use um dos configuradores JDBC que utilizam java.sql.Date ou java.sql.Timestamp


1 para resposta № 3

format Leva um Date e retorna um formatado String. parse leva um formatado String e retorna um Date objeto. Quando você faz parseFormat.parse(dateFormat.format(date)) você está convertendo Date para String e para Date novamente. O valor que é impresso é a representação padrão fornecida por Date.toString() em vez da string formatada.

       System.out.println("current: " +dateFormat.format(date));