我看到很多直接用19:00做条件,因为我害怕开始时间会变,所以就截取了课程时间除后六位之外的前几位与进出时间进行对比,这样泛化性会好一些

select course_tb.course_id,
       course_name,
       count(distinct user_id) as online_num
       from
       attend_tb join course_tb on attend_tb.course_id = course_tb.course_id
       where in_datetime <= date_format(left(course_datetime,length(course_datetime) - 6),'%Y-%m-%d %T')
       and out_datetime > date_format(left(course_datetime,length(course_datetime) - 6),'%Y-%m-%d %T')
       group by course_tb.course_id,course_name
       order by course_tb.course_id;