dateValue.getDays()); int [] times = ExprAnnotator.timeToIntArray(timeValue.getHours(), timeValue.getMinutes(),
@Override public EvalNode visitDateLiteral(Context context, Stack<Expr> stack, DateLiteral expr) throws TajoException { DateValue dateValue = expr.getDate(); int[] dates = dateToIntArray(dateValue.getYears(), dateValue.getMonths(), dateValue.getDays()); TimeMeta tm = new TimeMeta(); tm.years = dates[0]; tm.monthOfYear = dates[1]; tm.dayOfMonth = dates[2]; DateTimeUtil.j2date(DateTimeUtil.date2j(dates[0], dates[1], dates[2]), tm); return new ConstEval(new DateDatum(tm)); }
@Override public EvalNode visitDateLiteral(Context context, Stack<Expr> stack, DateLiteral expr) throws TajoException { DateValue dateValue = expr.getDate(); int[] dates = dateToIntArray(dateValue.getYears(), dateValue.getMonths(), dateValue.getDays()); TimeMeta tm = new TimeMeta(); tm.years = dates[0]; tm.monthOfYear = dates[1]; tm.dayOfMonth = dates[2]; DateTimeUtil.j2date(DateTimeUtil.date2j(dates[0], dates[1], dates[2]), tm); return new ConstEval(new DateDatum(tm)); }
@Override public EvalNode visitTimestampLiteral(Context ctx, Stack<Expr> stack, TimestampLiteral expr) throws TajoException { DateValue dateValue = expr.getDate(); TimeValue timeValue = expr.getTime(); int [] dates = dateToIntArray(dateValue.getYears(), dateValue.getMonths(), dateValue.getDays()); int [] times = timeToIntArray(timeValue.getHours(), timeValue.getMinutes(), timeValue.getSeconds(), timeValue.getSecondsFraction()); long timestamp; if (timeValue.hasSecondsFraction()) { timestamp = DateTimeUtil.toJulianTimestamp(dates[0], dates[1], dates[2], times[0], times[1], times[2], times[3] * 1000); } else { timestamp = DateTimeUtil.toJulianTimestamp(dates[0], dates[1], dates[2], times[0], times[1], times[2], 0); } TimeMeta tm = new TimeMeta(); DateTimeUtil.toJulianTimeMeta(timestamp, tm); DateTimeUtil.toUTCTimezone(tm, ctx.timeZone); return new ConstEval(new TimestampDatum(DateTimeUtil.toJulianTimestamp(tm))); }
@Override public EvalNode visitTimestampLiteral(Context ctx, Stack<Expr> stack, TimestampLiteral expr) throws TajoException { DateValue dateValue = expr.getDate(); TimeValue timeValue = expr.getTime(); int [] dates = dateToIntArray(dateValue.getYears(), dateValue.getMonths(), dateValue.getDays()); int [] times = timeToIntArray(timeValue.getHours(), timeValue.getMinutes(), timeValue.getSeconds(), timeValue.getSecondsFraction()); long timestamp; if (timeValue.hasSecondsFraction()) { timestamp = DateTimeUtil.toJulianTimestamp(dates[0], dates[1], dates[2], times[0], times[1], times[2], times[3] * 1000); } else { timestamp = DateTimeUtil.toJulianTimestamp(dates[0], dates[1], dates[2], times[0], times[1], times[2], 0); } TimeMeta tm = new TimeMeta(); DateTimeUtil.toJulianTimeMeta(timestamp, tm); DateTimeUtil.toUTCTimezone(tm, ctx.timeZone); return new ConstEval(new TimestampDatum(DateTimeUtil.toJulianTimestamp(tm))); }