我需要对mysql进行查询,在某个月的某一课程的几天内返回相关信息,我将通过一个示例进行更好的解释:
Course A
start 2018-10-18 end 2018-11-16 (incidence in november 16 days
Course B
start 2018-11-05 end 2018-11-05 (incidence in november 1 days)
Course C
start 2018-10-05 end 2019-01-20 (incidence in november 30 days)发病月份(前)是由用户动态选择的。
谢谢
发布于 2018-11-18 18:16:37
查找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子句的结构。
https://stackoverflow.com/questions/53364008
复制相似问题