protected Object convertIntervalYearMonth(Column column, Field fieldDefn, Object data) {
return convertValue(column, fieldDefn, data, NumberConversions.DOUBLE_FALSE, (r) -> {
if (data instanceof Number) {
r.deliver(((Number) data).doubleValue());
}
else if (data instanceof INTERVALYM) {
final String interval = ((INTERVALYM) data).stringValue();
int sign = 1;
int start = 0;
if (interval.charAt(0) == '-') {
sign = -1;
start = 1;
}
for (int i = 1; i < interval.length(); i++) {
if (interval.charAt(i) == '-') {
final int year = sign * Integer.parseInt(interval.substring(start, i));
final int month = sign * Integer.parseInt(interval.substring(i + 1, interval.length()));
r.deliver(MicroDuration.durationMicros(year, month, 0, 0,
0, 0, MicroDuration.DAYS_PER_MONTH_AVG));
}
}
}
});
}