code: func (j *Job) Reschedule(time time.Time) error {
  	t := newTransaction()
  	unixNanoTime := time.UTC().UnixNano()
  	t.setJobField(j, "time", unixNanoTime)
  	t.setStatus(j, StatusQueued)
  	j.time = unixNanoTime
  	t.addJobToTimeIndex(j)
  	if err := t.exec(); err != nil {
  		return err
  	}
  	j.status = StatusQueued
  	return nil
  }
docs: // Reschedule reschedules the job with the given time. It can be used to reschedule
  // cancelled jobs. It may also be used to reschedule finished or failed jobs, however,
  // in most cases if you want to reschedule finished jobs you should use the ScheduleRecurring
  // method and if you want to reschedule failed jobs, you should set the number of retries > 0
  // when registering the job type. Attempting to reschedule a destroyed job will have no effect.
  // Reschedule returns an error if there was a problem connecting to the database.