我需要在mysql上进行查询,以返回特定月份某天课程的发生率,我将通过以下示例更好地说明这一点:
(strlen($input) != 3)
用户动态选择发病月份(例如11月)。
谢谢
答案 0 :(得分:0)
查找从11月开始的课程的11月部分:
SELECT DATE_DIFF(
CASE WHEN start_date > '2018-11-01' THEN start_date ELSE '2018-11-01' END,
CASE WHEN end_date <= '2018-11-30' THEN end_date ELSE '2018-11-30' END
) + 1
FROM
courses
WHERE NOT(start_date > '2018-11-30' OR end_date < '2018-11-01')
我们基本上在开始日期和结束日期进行测试-如果开始日期在11月之前,则将其固定为11月1日。如果结束日期在11月底之后,则将其固定在11月底。该查询包含两个日期-前端应用程序可以在用户选择11月之后提供这些日期。找到一个月的最后一个日期的基本公式是转到下个月的第一个日期(即同一年,月份+1,当天为“ 01”),减去一天
我们要排除在课程之前或之后开始的课程,因此是where子句的结构。