@M. Prokhorov's answer is correct Ich möchte nur ein paar Punkte hinzufügen.
A java.sql.Date
speichert nur die Werte für Tag, Monat und Jahr. Die Zeit Werte (Stunden, Minuten, Sekunden und Millisekunden) are all set to zero. Wenn Sie also eine LocalDateTime
in eine java.sql.Date
konvertieren, gehen diese Felder verloren.
Wenn Sie ein One-Way-Konvertierung tun und nichts dagegen, diese Felder zu verlieren, dann ist es in Ordnung, es zu tun:
LocalDateTime dt = // LocalDateTime value
// convert to Date (time information is lost)
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate());
Aber wenn Sie später die ursprüngliche LocalDateTime
wiederherstellen möchten, ist es besser, die Zeitfelder speichern separetely, so können Sie es wiederherstellen:
LocalDateTime dt = // your LocalDateTime
// save time information (hour, minute, seconds, fraction of seconds)
LocalTime savedTime = dt.toLocalTime();
// convert to Date (time information is lost)
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate());
// retrieve back the LocalDate (only day/month/year)
LocalDate localDate = date.toLocalDate();
// retrieve the LocalDateTime, with the original time values
LocalDateTime ldt = localDate.atTime(savedTime);
Diese Antwort muss die richtige Antwort auf diese Frage +1 sein. –