private static <T> T convertDateTime(ZonedDateTime value, Class<?> typeHint) {
        if (typeHint == null) {
            return (T) value;
        }
        if (LocalDateTime.class.isAssignableFrom(typeHint)) {
            return (T) value.toLocalDateTime();
        } else if (LocalDate.class.isAssignableFrom(typeHint)) {
            return (T) value.toLocalDate();
        }

        return (T) value;
    }
Reads a value from the internal input stream. Method will use type hint to do smarter conversion if possible.
For example, all datetime values are of {@link ZonedDateTime}; if a type hint is {@link LocalDateTime} then
{@link ZonedDateTime#toLocalDateTime()} .
@param column - column information
@param typeHint - type hint
@return value
@param <T> - target type of the value
@throws IOException when IO error occurs
client-v2/src/main/java/com/clickhouse/client/api/data_formats/internal/BinaryStreamReader.java