@Override public Value negate() { return ValueTime.fromNanos(-nanos); }
/** * Get or create a time value for the given time. * * @param time the time * @return the value */ public static ValueTime get(Time time) { return fromNanos(DateTimeUtils.nanosFromDate(time.getTime())); }
@Override public Value multiply(Value v) { return ValueTime.fromNanos((long) (nanos * v.getDouble())); }
@Override public Value divide(Value v) { return ValueTime.fromNanos((long) (nanos / v.getDouble())); }
/** * Parse a string to a ValueTime. * * @param s the string to parse * @return the time */ public static ValueTime parse(String s) { try { return fromNanos(DateTimeUtils.parseTimeNanos(s, 0, s.length(), false)); } catch (Exception e) { throw DbException.get(ErrorCode.INVALID_DATETIME_CONSTANT_2, e, "TIME", s); } }
/** * Convert the time using the specified calendar. * * @param x the time * @param calendar the calendar * @return the time */ public static ValueTime convertTime(Time x, Calendar calendar) { if (calendar == null) { throw DbException.getInvalidValueException("calendar", null); } Calendar cal = (Calendar) calendar.clone(); cal.setTimeInMillis(x.getTime()); long nanos = nanosFromCalendar(cal); return ValueTime.fromNanos(nanos); }
@Override public Value add(Value v) { ValueTime t = (ValueTime) v.convertTo(Value.TIME); return ValueTime.fromNanos(nanos + t.getNanos()); }
@Override public Value subtract(Value v) { ValueTime t = (ValueTime) v.convertTo(Value.TIME); return ValueTime.fromNanos(nanos - t.getNanos()); }
@Override public Value readValue(ByteBuffer buff) { long nanos = DataUtils.readVarLong(buff) * 1000000 + DataUtils.readVarLong(buff); return ValueTime.fromNanos(nanos); }
value = ValueTimestamp.get(new Timestamp(session.getTransactionStart())); } else if (dt.type == Value.TIME) { value = ValueTime.fromNanos(0); } else if (dt.type == Value.DATE) { value = ValueDate.get(new Date(session.getTransactionStart()));
return ValueDate.fromDateValue(readLong()); case Value.TIME: return ValueTime.fromNanos(readLong()); case Value.TIMESTAMP: return ValueTimestamp.fromDateValueAndNanos(readLong(), readLong());