public int getNanos() {
    if (!timestampTZEmpty) {
      return timestampTZ.getNanos();
    } else if (!bytesEmpty) {
      return hasDecimalOrSecondVInt(currentBytes[offset]) ? getNanos(currentBytes, offset + 4) : 0;
    }
    throw new IllegalStateException("Both timestamp and bytes are empty");
  }
@return double representation of the timestampTZ, accurate to microseconds
serde/src/java/org/apache/hadoop/hive/serde2/io/TimestampLocalTZWritable.java