@Override protected DateTimeValue selectDateTime( AnyValue datetime ) { if ( datetime instanceof DateTimeValue ) { DateTimeValue value = (DateTimeValue) datetime; ZoneId zone = optionalTimezone(); return zone == null ? value : new DateTimeValue( ZonedDateTime.of( value.temporal().toLocalDateTime(), zone ) ); } if ( datetime instanceof LocalDateTimeValue ) { return new DateTimeValue( ZonedDateTime.of( ((LocalDateTimeValue) datetime).temporal(), timezone() ) ); } throw new UnsupportedTemporalUnitException( "Cannot select datetime from: " + datetime ); } };
private static ZoneId timezone( TemporalValue<?,?> temporal ) { if ( temporal instanceof DateTimeValue ) { return ((DateTimeValue) temporal).temporal().getZone(); } if ( temporal instanceof TimeValue ) { return ((TimeValue) temporal).temporal().getOffset(); } return null; }
@Override protected DateTimeValue selectDateTime( AnyValue datetime ) { if ( datetime instanceof DateTimeValue ) { DateTimeValue value = (DateTimeValue) datetime; ZoneId zone = optionalTimezone(); return zone == null ? value : new DateTimeValue( ZonedDateTime.of( value.temporal().toLocalDateTime(), zone ) ); } if ( datetime instanceof LocalDateTimeValue ) { return new DateTimeValue( ZonedDateTime.of( ((LocalDateTimeValue) datetime).temporal(), timezone() ) ); } throw new UnsupportedTemporalUnitException( "Cannot select datetime from: " + datetime ); } };