public void eval()

in exec/java-exec/src/main/codegen/templates/DateIntervalFunctionTemplates/DateTruncFunctions.java [90:295]


    public void eval() {
      <#if type == "Time"> <#-- Start InputType -->
        <#if toUnit == "Hour"> <#-- Start UnitType -->
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().hourOfDay());
      out.value = (int) dateTime.getMillis();
        <#elseif toUnit == "Minute">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().minuteOfHour());
      out.value = (int) dateTime.getMillis();
        <#elseif toUnit == "Second">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().secondOfMinute());
      out.value = (int) dateTime.getMillis();
        <#else>
        <#-- For all other units truncate the whole thing -->
      out.value = 0;
        </#if> <#-- End UnitType -->
      <#elseif type == "Date">
        <#if toUnit == "Second" || toUnit == "Minute" || toUnit == "Hour" || toUnit == "Day"> <#-- Start UnitType -->
      // No truncation as there is no time part in date
      out.value = right.value;
        <#elseif toUnit == "Year">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().year());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Month">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().monthOfYear());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Week">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().weekOfWeekyear());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Quarter">
      dateTime.setMillis(right.value);
      int month = dateTime.getMonthOfYear();
      dateTime.setRounding(dateTime.getChronology().year());
      dateTime2.setMillis(dateTime.getMillis());
      dateTime2.add(org.joda.time.DurationFieldType.months(), ((month-1)/3)*3);
      out.value = dateTime2.getMillis();
        <#elseif toUnit == "Decade">
      dateTime.setMillis(right.value);
      int year = dateTime.getYear();
      dateTime.setRounding(dateTime.getChronology().centuryOfEra());
      dateTime2.setMillis(dateTime.getMillis());
      dateTime2.add(org.joda.time.DurationFieldType.years(), ((year%100)/10)*10);
      out.value = dateTime2.getMillis();
        <#elseif toUnit == "Century">
      dateTime.setMillis(right.value);
      dateTime.add(org.joda.time.DurationFieldType.years(), -1);
      dateTime.setRounding(dateTime.getChronology().centuryOfEra());
      dateTime2.setMillis(dateTime.getMillis());
      dateTime2.add(org.joda.time.DurationFieldType.years(), 1);
      out.value = dateTime2.getMillis();
        <#elseif toUnit == "Millennium">
      dateTime.setMillis(right.value);
      int year = dateTime.getYear();
      dateTime.setRounding(dateTime.getChronology().era());
      dateTime2.setMillis(dateTime.getMillis());
      dateTime2.add(org.joda.time.DurationFieldType.years(), ((year-1)/1000)*1000);
      out.value = dateTime2.getMillis();
        </#if> <#-- End UnitType -->
      <#elseif type == "TimeStamp">
        <#if toUnit == "Year"> <#--  Start UnitType -->
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().year());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Month">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().monthOfYear());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Day">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().dayOfMonth());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Hour">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().hourOfDay());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Minute">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().minuteOfHour());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Second">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().secondOfMinute());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Week">
      dateTime.setMillis(right.value);
      dateTime.setRounding(dateTime.getChronology().weekOfWeekyear());
      out.value = dateTime.getMillis();
        <#elseif toUnit == "Quarter">
      dateTime.setMillis(right.value);
      int month = dateTime.getMonthOfYear();
      dateTime.setRounding(dateTime.getChronology().year());
      dateTime2.setMillis(dateTime.getMillis());
      dateTime2.add(org.joda.time.DurationFieldType.months(), ((month-1)/3)*3);
      out.value = dateTime2.getMillis();
        <#elseif toUnit == "Decade">
      dateTime.setMillis(right.value);
      int year = dateTime.getYear();
      dateTime.setRounding(dateTime.getChronology().centuryOfEra());
      dateTime2.setMillis(dateTime.getMillis());
      dateTime2.add(org.joda.time.DurationFieldType.years(), ((year%100)/10)*10);
      out.value = dateTime2.getMillis();
        <#elseif toUnit == "Century">
      dateTime.setMillis(right.value);
      dateTime.add(org.joda.time.DurationFieldType.years(), -1);
      dateTime.setRounding(dateTime.getChronology().centuryOfEra());
      dateTime2.setMillis(dateTime.getMillis());
      dateTime2.add(org.joda.time.DurationFieldType.years(), 1);
      out.value = dateTime2.getMillis();
        <#elseif toUnit == "Millennium">
      dateTime.setMillis(right.value);
      int year = dateTime.getYear();
      dateTime.setRounding(dateTime.getChronology().era());
      dateTime2.setMillis(dateTime.getMillis());
      dateTime2.add(org.joda.time.DurationFieldType.years(), ((year-1)/1000)*1000);
      out.value = dateTime2.getMillis();
        </#if> <#-- End UnitType -->
      <#elseif type == "Interval">
        <#if toUnit == "Second"> <#--  Start UnitType -->
      out.months = right.months;
      out.days = right.days;
      out.milliseconds = (right.milliseconds/(org.apache.drill.exec.vector.DateUtilities.secondsToMillis))*
          (org.apache.drill.exec.vector.DateUtilities.secondsToMillis);
        <#elseif toUnit == "Minute">
      out.months = right.months;
      out.days = right.days;
      out.milliseconds = (right.milliseconds/(org.apache.drill.exec.vector.DateUtilities.minutesToMillis))*
          (org.apache.drill.exec.vector.DateUtilities.minutesToMillis);
        <#elseif toUnit == "Hour">
      out.months = right.months;
      out.days = right.days;
      out.milliseconds =
          (right.milliseconds/(org.apache.drill.exec.vector.DateUtilities.hoursToMillis))*
              (org.apache.drill.exec.vector.DateUtilities.hoursToMillis);
        <#elseif toUnit == "Day">
      out.months = right.months;
      out.days = right.days;
      out.milliseconds = 0;
        <#elseif toUnit == "Month">
      out.months = right.months;
      out.days = 0;
      out.milliseconds = 0;
        <#elseif toUnit == "Quarter">
      out.months = (right.months / 3) * 3;
      out.days = 0;
      out.milliseconds = 0;
        <#elseif toUnit == "Year">
      out.months = (right.months / 12) * 12;
      out.days = 0;
      out.milliseconds = 0;
        <#elseif toUnit == "Decade">
      out.months = (right.months / 120) * 120;
      out.days = 0;
      out.milliseconds = 0;
        <#elseif toUnit == "Century">
      out.months = (right.months / 1200) * 1200;
      out.days = 0;
      out.milliseconds = 0;
        <#elseif toUnit == "Millennium">
      out.months = (right.months / 12000) * 12000;
      out.days = 0;
      out.milliseconds = 0;
        </#if> <#-- End UnitType -->
      <#elseif type == "IntervalDay">
        <#if toUnit == "Second"> <#--  Start UnitType -->
      out.days = right.days;
      out.milliseconds = (right.milliseconds/(org.apache.drill.exec.vector.DateUtilities.secondsToMillis))*
        (org.apache.drill.exec.vector.DateUtilities.secondsToMillis);
        <#elseif toUnit == "Minute">
      out.days = right.days;
      out.milliseconds = (right.milliseconds/(org.apache.drill.exec.vector.DateUtilities.minutesToMillis))*
          (org.apache.drill.exec.vector.DateUtilities.minutesToMillis);
        <#elseif toUnit == "Hour">
      out.days = right.days;
      out.milliseconds =
          (right.milliseconds/(org.apache.drill.exec.vector.DateUtilities.hoursToMillis))*
              (org.apache.drill.exec.vector.DateUtilities.hoursToMillis);
        <#elseif toUnit == "Day">
      out.days = right.days;
      out.milliseconds = 0;
        <#elseif toUnit == "Month" || toUnit == "Quarter" || toUnit == "Year" || toUnit == "Decade" || toUnit == "Century" || toUnit == "Millennium">
      out.days = 0;
      out.milliseconds = 0;
        </#if> <#-- End UnitType -->
      <#elseif type == "IntervalYear">
        <#if toUnit == "Second" || toUnit == "Minute" || toUnit == "Hour" || toUnit == "Day"> <#--  Start UnitType -->
      out.value = right.value;
        <#elseif toUnit == "Month">
      out.value = right.value;
        <#elseif toUnit == "Quarter">
      out.value = (right.value / 3) * 3;
        <#elseif toUnit == "Year">
      out.value = (right.value / 12) * 12;
        <#elseif toUnit == "Decade">
      out.value = (right.value / 120) * 120;
        <#elseif toUnit == "Century">
      out.value = (right.value / 1200) * 1200;
        <#elseif toUnit == "Millennium">
      out.value = (right.value / 12000) * 12000;
        </#if> <#-- End UnitType -->
      </#if> <#-- End InputType -->
    }