[jOOQ/jOOQ#12225] DefaultConverterProvider truncates timestamps to
milliseconds precision when converting from Timestamp to LocalDateTime
This commit is contained in:
parent
f79e59c230
commit
1f9b1f887b
@ -891,10 +891,28 @@ final class Convert {
|
||||
|
||||
// Date types can be converted among each other
|
||||
else if (java.util.Date.class.isAssignableFrom(fromClass)) {
|
||||
return toDate(((java.util.Date) from).getTime(), toClass);
|
||||
|
||||
// [#12225] Avoid losing precision if possible
|
||||
if (Timestamp.class == fromClass && LocalDateTime.class == toClass)
|
||||
return (U) ((Timestamp) from).toLocalDateTime();
|
||||
else if (Date.class == fromClass && LocalDate.class == toClass)
|
||||
return (U) ((Date) from).toLocalDate();
|
||||
else if (Time.class == fromClass && LocalTime.class == toClass)
|
||||
return (U) ((Time) from).toLocalTime();
|
||||
else
|
||||
return toDate(((java.util.Date) from).getTime(), toClass);
|
||||
}
|
||||
else if (Temporal.class.isAssignableFrom(fromClass)) {
|
||||
return toDate(convert(from, Long.class), toClass);
|
||||
|
||||
// [#12225] Avoid losing precision if possible
|
||||
if (LocalDateTime.class == fromClass && Timestamp.class == toClass)
|
||||
return (U) Timestamp.valueOf((LocalDateTime) from);
|
||||
else if (LocalDate.class == fromClass && Date.class == toClass)
|
||||
return (U) Date.valueOf((LocalDate) from);
|
||||
else if (LocalTime.class == fromClass && Time.class == toClass)
|
||||
return (U) Time.valueOf((LocalTime) from);
|
||||
else
|
||||
return toDate(convert(from, Long.class), toClass);
|
||||
}
|
||||
|
||||
// Long may also be converted into a date type
|
||||
|
||||
@ -883,7 +883,28 @@ public final class Convert {
|
||||
|
||||
// Date types can be converted among each other
|
||||
else if (java.util.Date.class.isAssignableFrom(fromClass)) {
|
||||
return toDate(((java.util.Date) from).getTime(), toClass);
|
||||
|
||||
// [#12225] Avoid losing precision if possible
|
||||
if (Timestamp.class == fromClass && LocalDateTime.class == toClass)
|
||||
return (U) ((Timestamp) from).toLocalDateTime();
|
||||
else if (Date.class == fromClass && LocalDate.class == toClass)
|
||||
return (U) ((Date) from).toLocalDate();
|
||||
else if (Time.class == fromClass && LocalTime.class == toClass)
|
||||
return (U) ((Time) from).toLocalTime();
|
||||
else
|
||||
return toDate(((java.util.Date) from).getTime(), toClass);
|
||||
}
|
||||
else if (Temporal.class.isAssignableFrom(fromClass)) {
|
||||
|
||||
// [#12225] Avoid losing precision if possible
|
||||
if (LocalDateTime.class == fromClass && Timestamp.class == toClass)
|
||||
return (U) Timestamp.valueOf((LocalDateTime) from);
|
||||
else if (LocalDate.class == fromClass && Date.class == toClass)
|
||||
return (U) Date.valueOf((LocalDate) from);
|
||||
else if (LocalTime.class == fromClass && Time.class == toClass)
|
||||
return (U) Time.valueOf((LocalTime) from);
|
||||
else
|
||||
return toDate(convert(from, Long.class), toClass);
|
||||
}
|
||||
else if (Temporal.class.isAssignableFrom(fromClass)) {
|
||||
return toDate(convert(from, Long.class), toClass);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user