Question about joining tables
I think I understand what you are getting at. Could you try the following query:

SELECT startshift, endshift, starttime, endtime, `NAME`
from shifts
JOIN people on shifts.PPLID=people.id
INNER JOIN shift_breaks on shifts.PPLID=BREAKID 
    and (date(startshift) = date(starttime))
    and (date(startshift) = date(endtime))
where PPLID="0"
ORDER BY STARTSHIFT


This ensures that your join between shifts and shift_breaks are on Person ID AND the corresponding date.

I tested this in a database locally and it seemed to give the desired result.

This approach would have an issue if the start of the shift and end of the shift were on DIFFERENT dates (i.e.: overnight swing shift.)

Overnight shift wont work because we are comparing the DATE of the break begin/end to the DATE of the shift start. To handle spanning dates, you may need a SHIFT table with SHIFT ID, SHIFTSTART (datetime), SHIFTEND (datetime)... then Breaks would have a FK relationship to a SHIFT and EMPLOYEE. Shifts would have an FK relationship with EMPLOYEE. Would then join on IDs.

There are a few ways to restrict the records to a date range within the where clause. You can add where PPLID="0" and date(startdate) = '2017-03-30' for a single day or BETWEEN for a range (between '2012-03-11 00:00:00' and '2012-05-11 23:59:00').