public int getMillisOfSecond() { TimeMeta tm = asTimeMeta(); return tm.fsecs / 1000; }
public int getMillisOfSecond() { TimeMeta tm = asTimeMeta(); return tm.fsecs / 1000; }
public int getMinuteOfHour() { TimeMeta tm = asTimeMeta(); return tm.minutes; }
public int getHourOfDay() { TimeMeta tm = asTimeMeta(); return tm.hours; }
public int getHourOfDay() { TimeMeta tm = asTimeMeta(); return tm.hours; }
public int getMinuteOfHour() { TimeMeta tm = asTimeMeta(); return tm.minutes; }
@Override public String asChars() { TimeMeta tm = asTimeMeta(); return DateTimeUtil.encodeTime(tm, DateStyle.ISO_DATES); }
@Override public String asChars() { TimeMeta tm = asTimeMeta(); return DateTimeUtil.encodeTime(tm, DateStyle.ISO_DATES); }
@Override public Expr visitTimeLiteral(Object ctx, Stack<Expr> stack, TimeLiteral expr) throws TajoException { StringBuilder sb = new StringBuilder(); if (!isHiveCatalog) { TimeValue timeValue = expr.getTime(); int [] times = ExprAnnotator.timeToIntArray(timeValue.getHours(), timeValue.getMinutes(), timeValue.getSeconds(), timeValue.getSecondsFraction()); long time; if (timeValue.hasSecondsFraction()) { time = DateTimeUtil.toTime(times[0], times[1], times[2], times[3] * 1000); } else { time = DateTimeUtil.toTime(times[0], times[1], times[2], 0); } TimeDatum timeDatum = new TimeDatum(time); TimeMeta tm = timeDatum.asTimeMeta(); TimeZone tz = TimeZone.getDefault(); DateTimeUtil.toUTCTimezone(tm, tz); sb.append("?").append(" )"); parameters.add(new Pair(Type.TIME, new Time(DateTimeUtil.toJavaTime(tm.hours, tm.minutes, tm.secs, tm.fsecs)))); } else { sb.append("\"").append(expr.toString()).append("\""); } queries.push(sb.toString()); return expr; }
/** * This method uses the given calendar to construct an appropriate millisecond * value for the time if the underlying database does not store timezone information. */ private Time getTime(Tuple tuple, Calendar cal, int index) throws SQLException { if (handleNull(tuple, index)) return null; TimeZone tz = cal == null ? TimeZone.getDefault() : cal.getTimeZone(); long javaTime; switch (tuple.type(index)) { case DATE: case TIME: { TimeMeta tm = tuple.asDatum(index).asTimeMeta(); javaTime = DateTimeUtil.convertTimeZone(toTime(tm, null).getTime(), TimeZone.getDefault(), tz); break; } case TIMESTAMP: { return DateTimeUtil.convertToTime(getTimestamp(tuple, index), timezone); } case TEXT: { TimeMeta tm = DatumFactory.createTime(tuple.asDatum(index)).asTimeMeta(); javaTime = DateTimeUtil.convertTimeZone(toTime(tm, null).getTime(), TimeZone.getDefault(), tz); break; } default: throw new TajoSQLException(Errors.ResultCode.INVALID_VALUE_FOR_CAST, tuple.type(index).name(), "time"); } // remove date part return DateTimeUtil.convertToTime(javaTime, TimeZone.getDefault()); }
@Override public Datum minus(Datum datum) { switch(datum.kind()) { case INTERVAL: IntervalDatum interval = ((IntervalDatum)datum); TimeMeta tm = asTimeMeta(); tm.plusInterval(-interval.months, -interval.milliseconds); return new TimeDatum(DateTimeUtil.toTime(tm)); case TIME: return new IntervalDatum((time - ((TimeDatum)datum).time)/1000); default: throw new InvalidOperationException("operator does not exist: " + type() + " - " + datum.type()); } }
@Override public Datum minus(Datum datum) { switch(datum.type()) { case INTERVAL: IntervalDatum interval = ((IntervalDatum)datum); TimeMeta tm = asTimeMeta(); tm.plusInterval(-interval.months, -interval.milliseconds); return new TimeDatum(DateTimeUtil.toTime(tm)); case TIME: return new IntervalDatum((time - ((TimeDatum)datum).time)/1000); default: throw new InvalidOperationException("operator does not exist: " + type() + " - " + datum.type()); } }
private Time getTime(Tuple tuple, int index) throws SQLException { if (handleNull(tuple, index)) return null; switch (tuple.type(index)) { case DATE: case TIME: return toTime(tuple.asDatum(index).asTimeMeta(), null); case TIMESTAMP: return toTime(tuple.asDatum(index).asTimeMeta(), timezone); case TEXT: return toTime(DatumFactory.createTime(tuple.asDatum(index)).asTimeMeta(), null); default: throw new TajoSQLException(Errors.ResultCode.INVALID_VALUE_FOR_CAST, tuple.type(index).name(), "time"); } }
@Override public EvalNode visitTimeLiteral(Context ctx, Stack<Expr> stack, TimeLiteral expr) throws TajoException { TimeValue timeValue = expr.getTime(); int [] times = timeToIntArray(timeValue.getHours(), timeValue.getMinutes(), timeValue.getSeconds(), timeValue.getSecondsFraction()); long time; if (timeValue.hasSecondsFraction()) { time = DateTimeUtil.toTime(times[0], times[1], times[2], times[3] * 1000); } else { time = DateTimeUtil.toTime(times[0], times[1], times[2], 0); } TimeDatum timeDatum = new TimeDatum(time); TimeMeta tm = timeDatum.asTimeMeta(); return new ConstEval(new TimeDatum(DateTimeUtil.toTime(tm))); }
@Override public EvalNode visitTimeLiteral(Context ctx, Stack<Expr> stack, TimeLiteral expr) throws TajoException { TimeValue timeValue = expr.getTime(); int [] times = timeToIntArray(timeValue.getHours(), timeValue.getMinutes(), timeValue.getSeconds(), timeValue.getSecondsFraction()); long time; if (timeValue.hasSecondsFraction()) { time = DateTimeUtil.toTime(times[0], times[1], times[2], times[3] * 1000); } else { time = DateTimeUtil.toTime(times[0], times[1], times[2], 0); } TimeDatum timeDatum = new TimeDatum(time); TimeMeta tm = timeDatum.asTimeMeta(); return new ConstEval(new TimeDatum(DateTimeUtil.toTime(tm))); }
@Override public Datum plus(Datum datum) { switch (datum.type()) { case INTERVAL: { IntervalDatum interval = ((IntervalDatum) datum); TimeMeta tm = asTimeMeta(); tm.plusInterval(interval.months, interval.milliseconds); return new TimeDatum(DateTimeUtil.toTime(tm)); } case DATE: { DateDatum dateDatum = (DateDatum) datum; TimeMeta dateTm = dateDatum.asTimeMeta(); dateTm.plusTime(time); return new TimestampDatum(DateTimeUtil.toJulianTimestamp(dateTm)); } case TIMESTAMP: { TimestampDatum timestampDatum = (TimestampDatum) datum; TimeMeta tm = timestampDatum.asTimeMeta(); tm.plusTime(time); return new TimestampDatum(DateTimeUtil.toJulianTimestamp(tm)); } default: throw new InvalidOperationException("operator does not exist: " + type() + " + " + datum.type()); } }
@Override public Datum plus(Datum datum) { switch (datum.kind()) { case INTERVAL: { IntervalDatum interval = ((IntervalDatum) datum); TimeMeta tm = asTimeMeta(); tm.plusInterval(interval.months, interval.milliseconds); return new TimeDatum(DateTimeUtil.toTime(tm)); } case DATE: { DateDatum dateDatum = (DateDatum) datum; TimeMeta dateTm = dateDatum.asTimeMeta(); dateTm.plusTime(time); return new TimestampDatum(DateTimeUtil.toJulianTimestamp(dateTm)); } case TIMESTAMP: { TimestampDatum timestampDatum = (TimestampDatum) datum; TimeMeta tm = timestampDatum.asTimeMeta(); tm.plusTime(time); return new TimestampDatum(DateTimeUtil.toJulianTimestamp(tm)); } default: throw new InvalidOperationException("operator does not exist: " + type() + " + " + datum.type()); } }