/ / Como faço para adicionar um objeto Joda DateTime no meu banco de dados MSSQL - java, sql-server, datetime

Como faço para adicionar um objeto Joda DateTime no meu banco de dados MSSQL - java, sql-server, datetime

então eu tenho um banco de dados mssql com umColuna DateObjectCreated do tipo DateTime. Os valores que serão aceitos na tabela estão no formato 2013-12-23 12: 23: 56.567. No entanto, meu programa java está criando um objeto DateTime joda com o formato 2013-12-23T 12: 23: 56.567Z. isso não vai inserir no meu banco de dados. eu preciso converter "2013-12-23T 12: 23: 56.567Z" para 2013-12-23 12: 23: 56.567 ou encontrar uma maneira de permitir que minha tabela de banco de dados aceite "2013-12-23T 12:23: Formato 56.567Z " qualquer ajuda sobre este assunto será muito apreciada Muito Obrigado Billy Controlador

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String formattedDate = formatter.format(date);//this gives me the string as i need it
DateTime dt = new DateTime(formattedDate);//here it adds the "T" and "Z"

eu tentei

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String formattedDate = formatter.format(date);//this gives me the string as i need it
Date dt = formatter.parse(formattedDate);//here it gives me the same as new Date()

Respostas:

0 para resposta № 1
  1. Formatador DateFormat = new SimpleDateFormat ("aaaa-MM-dd"); Data myDate = formatter.parse (data);

2.insira a descrição do link aqui A função TO_DATE pode ser usada no Oracle / PLSQL. Por exemplo:

TO_DATE ("2003/07/09", "yyyy / mm / dd") retornaria um valor de data de 9 de julho de 2003

TO_DATE ("070903", "MMDDYY") retornaria um valor de data de 9 de julho de 2003

TO_DATE ("20020315", "yyyymmdd") retornaria um valor de data de 15 de março de 2002


0 para resposta № 2

Sua coluna DB tem um tipo DateTime. A representação de texto da sua data é irrelevante para persistir. Independentemente da API que você está usando (JDBC, JPA, Hibernate), haverá algo como um método "setDateTime (Date date)" que permite que você passe um java.util.Date ou java.sql.Date ou um Java long . Você pode usar o valor em milissegundos do seu objeto Joda DateTime para criar o que for exigido pela API.


0 para resposta № 3

Você está trabalhando muito duro.

  1. Converta seu Joda-Time Data hora objeto para um java.util.Date. Apenas ligue toDate() método.
  2. Instância de data de passagem para o seu framework ou SQL.

o resposta por Ralf está correto em sua primeira parte, mas está errado no final em que você não precisa lidar com milissegundos. Joda-Time sabe como converter para java.util.Date.

org.joda.time.DateTime now = new org.joda.time.DateTime();
java.util.Date nowAsJavaUtilDate = now.toDate();

By the way, o java.sql.Date class é simplesmente uma subclasse muito fina de java.util.Date. Então não deixe que isso te jogue.


No futuro, isso se tornará ainda mais fácil. O Java 8 traz as novas classes JSR 310 no pacote java.time. *. Essas classes substituem a confusão que é java.util.Date/Calendar. Eles são inspirados pelo Joda-Time, mas são inteiramente reprojetados. Como eles são parte integrante do Java, espere que o JDBC e os frameworks relacionados sejam atualizados para lidar diretamente com esses novos tipos.