Database schema for date-time ranges
You need to record T0 for each student and ΔT for each lesson.
DATE math assumes a difference of 1 === 1 day.  That means a value of 0.5 === half day. etc. etc.  Some RDBMS support an INTERVAL data type that could be used instead.  It is up to you which one you want to use.
So, to calculate &quot;when to start a lesson&quot;, you just need to take the date_started value (T0) and add the delta_T value (ΔT) of the lesson to get the DATE-TIME to send the email.
create table lesson_plan (
  lesson_id int -- identifier
  ,class_id      int not null
  ,delta_T       number -- ( or whatever is best for your RDBMS)
  ,constraint lesson_plan_pk primary key (lesson_id)
  ,constraint lesson_plan_fk1 foreign key (class_id)
      references classes(class_id) on delete cascade
);

comment on table lesson_plan is 'Stores chapters and when to send the lesson';

create table student_classes (
   student_id     int
  ,class_id       int
  ,date_started   date -- needs to record DATE and TIME
  ,constraint student_classes_pk primary key (student_id,class_id)
  ,constraint sudent_classes_fk1 foreign key (student_id)
      references students(student_id) on delete cascade
  ,constraint student_classes_fk2 foreign key (class_id)
      references classes(class_id) on delete cascade
);

comment on table student_classes is 'Records when each student started a class.';

create or replace
view student_lessons
as
select a.student_id
      ,b.class_id
      ,c.lesson_id
      ,a.date_started + c.delta_T as lesson_start_datetime
from student_lessons a
  join classes b on a.class_id=b.class_id
  join lesson_plan c on c.class_id=b.class_id;

comment on view is 'When a lesson starts for a specific student.';