@M. Prokhorov's answer is correct , Chcę tylko dodać kilka punktów.
A java.sql.Date
przechowuje tylko wartości dnia, miesiąca i roku. Wartości czasu (godzina, minuta, sekundy i milisekundy) are all set to zero. Tak więc, po konwersji LocalDateTime
na java.sql.Date
, te pola zostaną utracone.
Jeśli robisz jednokierunkową konwersję i nie przeszkadza tracąc te pola, to jest ok, aby to zrobić:
LocalDateTime dt = // LocalDateTime value
// convert to Date (time information is lost)
java.sql.Date date = java.sql.Date.valueOf(dt.toLocalDate());
Ale jeśli chcesz, aby przywrócić oryginalny LocalDateTime
później, lepiej aby zapisać separetely pola czasu, dzięki czemu można go odzyskać:
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);
Ta odpowiedź musi być poprawną odpowiedzią na pytanie +1. –