-1

此选择不起作用:

SELECT collaborators.fullname, learnings.state_id, orgs.name AS orgs_name, courses.name AS courses_name
FROM learnings
LEFT JOIN collaborators ON learnings.person_id = collaborators.id
LEFT JOIN orgs ON collaborators.org_id = orgs.id
LEFT JOIN courses ON learnings.course_id = courses.id
WHERE collaborators.org_id = :org_id
AND learnings.start_date BETWEEN :date1 AND :date2
AND learnings.finish_date BETWEEN :date1 AND :date2

如果您在请求中留下以下内容之一:

AND learnings.start_date BETWEEN :date1 AND :date2

或者

AND learnings.finish_date BETWEEN :date1 AND :date2

然后选择有效。请告诉我:如何在此查询中组合两列start_date并将finish_date它们过滤为一列?

4

1 回答 1

0

如果您想要两个时间段之间有任何重叠,那么您可以使用:

AND
learnings.start_date <= :date2 AND
learnings.finish_date >= :date1 

如果您希望一个时间段完全在另一个时间段内 - 例如,learnings在两个日期内完成的时间戳 - 您可以使用:

AND
learnings.start_date >= :date1 AND
learnings.finish_date <= :date2 
于 2020-12-18T12:31:59.670 回答