@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Date date = getDateValue(arguments, 0, inputTypes, converters); if (date == null) { return null; } lastDay(date); Date newDate = calendar.getTime(); output.set(DateUtils.getDateFormat().format(newDate)); return output; }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Integer numMonthV; if (isNumMonthsConst) { numMonthV = numMonthsConst; } else { numMonthV = getIntValue(arguments, 1, converters); } if (numMonthV == null) { return null; } int numMonthInt = numMonthV.intValue(); Date date = getDateValue(arguments, 0, inputTypes, converters); if (date == null) { return null; } addMonth(date, numMonthInt); Date newDate = calendar.getTime(); output.set(DateUtils.getDateFormat().format(newDate)); return output; }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { int dayOfWeekInt; if (isDayOfWeekConst) { dayOfWeekInt = dayOfWeekIntConst; } else { String dayOfWeek = getStringValue(arguments, 1, converters); dayOfWeekInt = getIntDayOfWeek(dayOfWeek); } if (dayOfWeekInt == -1) { return null; } Date date = getDateValue(arguments, 0, inputTypes, converters); if (date == null) { return null; } nextDay(date, dayOfWeekInt); Date newDate = calendar.getTime(); output.set(DateUtils.getDateFormat().format(newDate)); return output; }
protected Date getDateValue(DeferredObject[] arguments, int i, PrimitiveCategory[] inputTypes, Converter[] converters) throws HiveException { Object obj; if ((obj = arguments[i].get()) == null) { return null; } Date date; switch (inputTypes[i]) { case STRING: case VARCHAR: case CHAR: String dateStr = converters[i].convert(obj).toString(); try { date = DateUtils.getDateFormat().parse(dateStr); } catch (ParseException e) { return null; } break; case TIMESTAMP: case DATE: Object writableValue = converters[i].convert(obj); date = ((DateWritable) writableValue).get(); break; default: throw new UDFArgumentTypeException(0, getFuncName() + " only takes STRING_GROUP and DATE_GROUP types, got " + inputTypes[i]); } return date; }
formatter = DateUtils.getDateFormat();
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Date date = getDateValue(arguments, 0, inputTypes, converters); if (date == null) { return null; } lastDay(date); Date newDate = calendar.getTime(); output.set(DateUtils.getDateFormat().format(newDate)); return output; }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Integer numMonthV; if (isNumMonthsConst) { numMonthV = numMonthsConst; } else { numMonthV = getIntValue(arguments, 1, converters); } if (numMonthV == null) { return null; } int numMonthInt = numMonthV.intValue(); Date date = getDateValue(arguments, 0, inputTypes, converters); if (date == null) { return null; } addMonth(date, numMonthInt); Date newDate = calendar.getTime(); output.set(DateUtils.getDateFormat().format(newDate)); return output; }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { int dayOfWeekInt; if (isDayOfWeekConst) { dayOfWeekInt = dayOfWeekIntConst; } else { String dayOfWeek = getStringValue(arguments, 1, converters); dayOfWeekInt = getIntDayOfWeek(dayOfWeek); } if (dayOfWeekInt == -1) { return null; } Date date = getDateValue(arguments, 0, inputTypes, converters); if (date == null) { return null; } nextDay(date, dayOfWeekInt); Date newDate = calendar.getTime(); output.set(DateUtils.getDateFormat().format(newDate)); return output; }
protected Date getDateValue(DeferredObject[] arguments, int i, PrimitiveCategory[] inputTypes, Converter[] converters) throws HiveException { Object obj; if ((obj = arguments[i].get()) == null) { return null; } Date date; switch (inputTypes[i]) { case STRING: case VARCHAR: case CHAR: String dateStr = converters[i].convert(obj).toString(); try { date = DateUtils.getDateFormat().parse(dateStr); } catch (ParseException e) { return null; } break; case TIMESTAMP: case DATE: Object writableValue = converters[i].convert(obj); date = ((DateWritable) writableValue).get(); break; default: throw new UDFArgumentTypeException(0, getFuncName() + " only takes STRING_GROUP and DATE_GROUP types, got " + inputTypes[i]); } return date; }