получить все записи между двумя интервалами дат в mysql
У меня есть таблицы user и resource_bookings в redmine. Я хочу получить учет пользователей, которые работают 8 часов, менее 8 часов, 0 часов и более 8 часов между двумя заданными датами на основе периода дат.
Таблица пользователей:
id firstname lastname status type
1 Ankur Mishra 1 user
2 Anil Chauhan 1 user
3 Jitendra Singh 1 user
....
таблица resource_bookings:
id project_id user_id start_date end_date hours_per_day
1 363 3 2019-09-13 00:00:00 2019-10-31 00:00:00 4
2 350 3 2019-09-01 00:00:00 2019-11-30 00:00:00 6
3 316 260 2020-01-01 00:00:00 2020-02-31 00:00:00 8.5
....
Мой ожидаемый результат:
Когда пользователь выбирает дату начала '2019-08-01' и дату окончания '2020-02-01', ожидается Выход выглядит следующим образом:
id user_id user_name start_date end_date hours_per_day
1 1 Ankur Mishra 2019-08-01 2020-02-01 0
2 2 Anil Chauhan 2019-08-01 2020-02-01 0
3 3 Jitendra Singh 2019-08-01 2019-08-31 0
4 3 Jitendra Singh 2019-09-01 2019-09-12 6
5 3 Jitendra Singh 2019-09-13 2019-10-31 10
6 3 Jitendra Singh 2019-11-01 2019-11-30 6
7 3 Jitendra Singh 2019-12-01 2020-02-01 0
....
Обратите внимание, что в приведенном выше ожидаемом выводе нам нужны все интервалы дат от начальной до конечной даты, даже если пользователь не запланирован на какой-либо слот / период. И если два интервала времени перекрываются, нам нужна сумма этих интервалов в выводе.