diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index c9b035f430..d61f8020e1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -2533,6 +2533,7 @@ public class DefaultBinding implements Binding { private static final ZoneOffset parseOffset(String string, int[] position) { int offsetHours = 0; int offsetMinutes = 0; + int offsetSeconds = 0; if (!parseCharIf(string, position, 'Z')) { @@ -2554,14 +2555,19 @@ public class DefaultBinding implements Binding { if (parseCharIf(string, position, ':')) offsetMinutes = parseInt(string, position, 2); + // [#8181] In some edge cases, there might also be a seconds offset + if (parseCharIf(string, position, ':')) + offsetSeconds = parseInt(string, position, 2); + if (minus) { offsetHours = -offsetHours; offsetMinutes = -offsetMinutes; + offsetSeconds = -offsetSeconds; } } } - return ZoneOffset.ofHoursMinutes(offsetHours, offsetMinutes); + return ZoneOffset.ofHoursMinutesSeconds(offsetHours, offsetMinutes, offsetSeconds); } private static final void parseAnyChar(String string, int[] position, String expected) {