public static long daysToNanoseconds(long daysSinceEpoch) { return DateWritable.daysToMillis((int) daysSinceEpoch) * NANOSECONDS_PER_MILLISECOND; }
public Date get(boolean doesTimeMatter) { return new Date(daysToMillis(daysSinceEpoch, doesTimeMatter)); }
protected long getDateField(long days) { calendar.setTimeInMillis(DateWritable.daysToMillis((int) days)); return calendar.get(field); }
public DateScalarSubtractTimestampColumn(long value, int colNum, int outputColumn) { this.colNum = colNum; // Scalar input #1 is type date (days). For the math we convert it to a timestamp. this.value = new Timestamp(0); this.value.setTime(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; }
public DateScalarAddIntervalYearMonthColumn(long value, int colNum, int outputColumn) { this.colNum = colNum; this.value = new Date(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; scratchIntervalYearMonth2 = new HiveIntervalYearMonth(); outputDate = new Date(0); }
public DateScalarSubtractDateColumn(long value, int colNum, int outputColumn) { this.colNum = colNum; this.value = new Timestamp(0); this.value.setTime(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; scratchTimestamp2 = new Timestamp(0); }
public DateScalarSubtractIntervalDayTimeColumn(long value, int colNum, int outputColumn) { this.colNum = colNum; // Scalar input #1 is type date (days). For the math we convert it to a timestamp. this.value = new Timestamp(0); this.value.setTime(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; }
public IntervalDayTimeColAddDateScalar(int colNum, long value, int outputColumn) { this.colNum = colNum; this.value = new Timestamp(0); this.value.setTime(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; }
public DateScalarAddIntervalDayTimeColumn(long value, int colNum, int outputColumn) { this.colNum = colNum; // Scalar input #1 is type date (days). For the math we convert it to a timestamp. this.value = new Timestamp(0); this.value.setTime(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; }
public TimestampColSubtractDateScalar(int colNum, long value, int outputColumn) { this.colNum = colNum; this.value = new Timestamp(0); this.value.setTime(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; }
public DateScalarSubtractIntervalYearMonthColumn(long value, int colNum, int outputColumn) { this.colNum = colNum; this.value = new Date(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; scratchIntervalYearMonth2 = new HiveIntervalYearMonth(); outputDate = new Date(0); }
public DateColSubtractDateScalar(int colNum, long value, int outputColumn) { this.colNum = colNum; this.value = new Timestamp(0); this.value.setTime(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; scratchTimestamp1 = new Timestamp(0); }
public IntervalYearMonthColAddDateScalar(int colNum, long value, int outputColumn) { this.colNum = colNum; this.value = new Date(DateWritable.daysToMillis((int) value)); this.outputColumn = outputColumn; scratchIntervalYearMonth1 = new HiveIntervalYearMonth(); outputDate = new Date(0); }
public static long daysToMillis(int d, boolean doesTimeMatter) { // What we are trying to get is the equivalent of new Date(ymd).getTime() in the local tz, // where ymd is whatever d represents. How it "works" is this. // First we get the UTC midnight for that day (which always exists, a small island of sanity). long utcMidnight = d * MILLIS_PER_DAY; // Now we take a local TZ offset at midnight UTC. Say we are in -4; that means (surprise // surprise) that at midnight UTC it was 20:00 in local. So far we are on firm ground. long utcMidnightOffset = LOCAL_TIMEZONE.get().getOffset(utcMidnight); // And now we wander straight into the swamp, when instead of adding, we subtract it from UTC // midnight to supposedly get local midnight (in the above case, 4:00 UTC). Of course, given // all the insane DST variations, where we actually end up is anyone's guess. long hopefullyMidnight = utcMidnight - utcMidnightOffset; // Then we determine the local TZ offset at that magical time. long offsetAtHM = LOCAL_TIMEZONE.get().getOffset(hopefullyMidnight); // If the offsets are the same, we assume our initial jump did not cross any DST boundaries, // and is thus valid. Both times flowed at the same pace. We congratulate ourselves and bail. if (utcMidnightOffset == offsetAtHM) return hopefullyMidnight; // Alas, we crossed some DST boundary. If the time of day doesn't matter to the caller, we'll // simply get the next day and go back half a day. This is not ideal but seems to work. if (!doesTimeMatter) return daysToMillis(d + 1) - (MILLIS_PER_DAY >> 1); // Now, we could get previous and next day, figure our how many hours were inserted or removed, // and from which of the days, etc. But at this point our gun is pointing straight at our foot, // so let's just go the safe, expensive way. Calendar utc = UTC_CALENDAR.get(), local = LOCAL_CALENDAR.get(); utc.setTimeInMillis(utcMidnight); local.set(utc.get(Calendar.YEAR), utc.get(Calendar.MONTH), utc.get(Calendar.DAY_OF_MONTH)); return local.getTimeInMillis(); }
@Override protected void func(BytesColumnVector outV, long[] vector, int i) { dt.setTime(DateWritable.daysToMillis((int) vector[i])); byte[] temp = dt.toString().getBytes(); assign(outV, i, temp, temp.length); } }
@Override public Object writeValue(long value) { dt.setTime(DateWritable.daysToMillis((int) value)); ((SettableDateObjectInspector) this.objectInspector).set(obj, dt); return obj; }
public long addMonthsToDays(long days, int months) { long millis = DateWritable.daysToMillis((int) days); millis = addMonthsToMillisLocal(millis, months); // Convert millis result back to days return DateWritable.millisToDays(millis); }
@Override public Object setValue(Object field, long value) { if (null == field) { field = initValue(null); } dt.setTime(DateWritable.daysToMillis((int) value)); ((SettableDateObjectInspector) this.objectInspector).set(field, dt); return field; }
scratchTimestamp2.setTime(DateWritable.daysToMillis((int) vector2[0])); dtm.subtract( value, scratchTimestamp2, outputColVector.getScratchIntervalDayTime()); for(int j = 0; j != n; j++) { int i = sel[j]; scratchTimestamp2.setTime(DateWritable.daysToMillis((int) vector2[i])); dtm.subtract( value, scratchTimestamp2, outputColVector.getScratchIntervalDayTime()); scratchTimestamp2.setTime(DateWritable.daysToMillis((int) vector2[i])); dtm.subtract( value, scratchTimestamp2, outputColVector.getScratchIntervalDayTime()); for(int j = 0; j != n; j++) { int i = sel[j]; scratchTimestamp2.setTime(DateWritable.daysToMillis((int) vector2[i])); dtm.subtract( value, scratchTimestamp2, outputColVector.getScratchIntervalDayTime()); scratchTimestamp2.setTime(DateWritable.daysToMillis((int) vector2[i])); dtm.subtract( value, scratchTimestamp2, outputColVector.getScratchIntervalDayTime());
scratchTimestamp1.setTime(DateWritable.daysToMillis((int) vector1[0])); dtm.add( scratchTimestamp1, value, outputColVector.getScratchTimestamp()); for(int j = 0; j != n; j++) { int i = sel[j]; scratchTimestamp1.setTime(DateWritable.daysToMillis((int) vector1[i])); dtm.add( scratchTimestamp1, value, outputColVector.getScratchTimestamp()); scratchTimestamp1.setTime(DateWritable.daysToMillis((int) vector1[i])); dtm.add( scratchTimestamp1, value, outputColVector.getScratchTimestamp()); for(int j = 0; j != n; j++) { int i = sel[j]; scratchTimestamp1.setTime(DateWritable.daysToMillis((int) vector1[i])); dtm.add( scratchTimestamp1, value, outputColVector.getScratchTimestamp()); scratchTimestamp1.setTime(DateWritable.daysToMillis((int) vector1[i])); dtm.add( scratchTimestamp1, value, outputColVector.getScratchTimestamp());