public Object set(Object o, DateWritable d) {
   if (d == null) {
     return null;
   }
   ((Date) o).setTime(d.get().getTime());
   return o;
 }
Exemple #2
0
 private Date convertToDate(
     PrimitiveCategory inputType, Converter converter, DeferredObject argument)
     throws HiveException {
   assert (converter != null);
   assert (argument != null);
   if (argument.get() == null) {
     return null;
   }
   Date date = new Date();
   switch (inputType) {
     case STRING:
     case VARCHAR:
     case CHAR:
       String dateString = converter.convert(argument.get()).toString();
       try {
         date = formatter.parse(dateString);
       } catch (ParseException e) {
         return null;
       }
       break;
     case TIMESTAMP:
       Timestamp ts = ((TimestampWritable) converter.convert(argument.get())).getTimestamp();
       date.setTime(ts.getTime());
       break;
     case DATE:
       DateWritable dw = (DateWritable) converter.convert(argument.get());
       date = dw.get();
       break;
     default:
       throw new UDFArgumentException(
           "TO_DATE() only takes STRING/TIMESTAMP/DATEWRITABLE types, got " + inputType);
   }
   return date;
 }
Exemple #3
0
  public IntWritable evaluate(DateWritable d) {
    if (d == null) {
      return null;
    }

    calendar.setTime(d.get());
    result.set(1 + calendar.get(Calendar.MONTH));
    return result;
  }
  @Test
  public void testDatePlusIntervalYearMonth() throws Exception {
    GenericUDFOPPlus udf = new GenericUDFOPPlus();

    DateWritable left = new DateWritable(Date.valueOf("2001-06-15"));
    HiveIntervalYearMonthWritable right =
        new HiveIntervalYearMonthWritable(HiveIntervalYearMonth.valueOf("2-8"));
    ObjectInspector[] inputOIs = {
      PrimitiveObjectInspectorFactory.writableDateObjectInspector,
      PrimitiveObjectInspectorFactory.writableHiveIntervalYearMonthObjectInspector
    };
    DeferredObject[] args = {
      new DeferredJavaObject(left), new DeferredJavaObject(right),
    };

    PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs);
    Assert.assertEquals(TypeInfoFactory.dateTypeInfo, oi.getTypeInfo());
    DateWritable res = (DateWritable) udf.evaluate(args);
    Assert.assertEquals(Date.valueOf("2004-02-15"), res.get());
  }