web-dev-qa-db-fra.com

Comment convertir un objet DateTime Time Joda dans une chaîne de SQL Server?

J'utilise la bibliothèque joda-time en Java et j'ai une date et une heure stockées comme org.joda.time.dateTetime objet.

Comment puis-je convertir de manière fiable cet objet DateTime en une chaîne qui sera analysée correctement par SQL Server (y compris le fuseau horaire), de sorte que je puisse l'utiliser dans une instruction INSERT SQL?

20
sanity

Utilisez Java.sql.Timestamp avec PreparedStatement#setTimestamp() .

ps.setTimestamp(1, new Timestamp(dateTime.getMillis()));

Notez que Java.sql.Date stocke uniquement la partie Date, pas la partie temporelle.

10
BalusC

vous pouvez essayer ce code simple:

DateTime dt = new DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
String dtStr = fmt.print(dt);
43
Vito

Veillez à considérer les fuseaux horaires. L'utilisation de nouveaux horodatages () peut être délicate car elle s'attend à ce qui s'attend à des millisecondes dans GMT.

    DateTime dt = new DateTime(2010, 1, 1, 14, 30, 59, 1, DateTimeZone.forOffsetHoursMinutes(7, 0));
    Timestamp ts = new Timestamp(dt.getMillis());
    System.out.println(dt); // prints 2010-01-01T14:30:59.001+07:00
    System.out.println(ts); // prints 2010-01-01 08:30:59.001

    DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
    String sqlTimeString = fmt.print(dt);
    System.out.println(sqlTimeString); // prints 2010-01-01 14:30:59
7
vladaman

Fonctionner simplement

J'utilise cette fonction simple pour obtenir un format de date SQL-convivial à partir d'un JodatimeDateTime objet:

// Converts a DateTime object into a SQL-format friendly string.
//
// Return format looks like this: 2014-01-22 10:05:34.546
//
public static String toSql(DateTime dateTime) {
    return new Timestamp( dateTime.getMillis() ).toString();
}
3
Joshua Pinter