感谢您用更多信息更新问题。如果您想按天查询并返回时间范围...您的表会使这有点复杂...
SELECT tdt.emp_id,CONCAT(DATE_FORMAT(tt.Start,'%H:%m:%s'),' - ',DATE_FORMAT(tt.End,'%H:%m:%s')),dt.Days
FROM time_date_tbl tdt INNER JOIN date_tbl dt ON (tdt.date_id=dt.`ID`) INNER JOIN time_tbl tt ON (tt.`ID`=tdt.time_id)
WHERE dt.ID=1
现在我在上面看不到的是带有日期的实际日期字段...换句话说,上面的查询将列出所有星期一...永远。您可能需要向 WHERE 部分添加更多内容以对其进行更多限制。
现在,如果这是一个较新的项目,并且您仍然有能力重组...如果 time_tbl 是一个 id 以及两个日期 - 开始日期时间和结束日期时间,您实际上不需要其余的表:
SELECT emp_id,CONCAT(DATE_FORMAT(tt.Start,'%H:%m:%s'),' - ',DATE_FORMAT(tt.End,'%H:%m:%s'))
FROM time_tbl tt
WHERE (DATE_FORMAT('%w',tt.Start)=1) OR (DATE_FORMAT('%w',tt.End)=1)
同样,这将列出所有星期一。您可以添加到 where 以对其进行更多限制。