20 Stimmen

Wie konvertiere ich ein Joda Time DateTime-Objekt in ein String im SQL Server-Format?

Ich verwende die Joda-Time Bibliothek in Java und habe ein Datum und eine Zeit als org.joda.time.DateTime Objekt gespeichert.

Wie kann ich dieses DateTime-Objekt zuverlässig in einen String konvertieren, der von SQL Server korrekt geparst wird (einschließlich der Zeitzone), so dass ich es in einer INSERT-SQL-Anweisung verwenden kann?

43voto

Vito Punkte 1070

Du kannst diesen einfachen Code ausprobieren:

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

10voto

BalusC Punkte 1034465

Verwenden Sie java.sql.Timestamp mit PreparedStatement#setTimestamp().

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

Beachten Sie, dass java.sql.Date nur den Datumsteil, nicht den Uhrzeitteil speichert.

7voto

vladaman Punkte 3477

Achten Sie darauf, die Zeitzonen zu berücksichtigen. Die Verwendung von new Timestamp() kann knifflig sein, da es die Zeit in Millisekunden in GMT erwartet.

    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); // druckt 2010-01-01T14:30:59.001+07:00
    System.out.println(ts); // druckt 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); // druckt 2010-01-01 14:30:59

3voto

Joshua Pinter Punkte 41335

Einfache Funktion

Ich verwende diese einfache Funktion, um ein SQL-freundliches Datumsformat aus einem JodaTime DateTime-Objekt zu erhalten:

// Wandelt ein DateTime-Objekt in einen SQL-freundlichen String um.
//
// Das Rückgabefortmat sieht so aus: 2014-01-22 10:05:34.546
//
public static String toSql(DateTime dateTime) {
    return new Timestamp( dateTime.getMillis() ).toString();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X