在我的 MySQL 数据库表中,我有以下日期期间(季节):
sstart,send,sname
2013-05-01,2013-05-31,'season1'
2013-06-01,2013-06-30,'season2'
我想创建 SQL 查询,该查询将针对给定的开始和结束日期在季节之间拆分此期间,并提供有关期间每个部分的持续时间的信息:
例如,对于以下时间段 (qstart,qend) 2013-04-20,2013-06-10,此查询应返回:
2013-04-20,2013-04-30,'',11 <-- this is important - I need it
2013-05-01,2013-05-31,'season1',31 <-- 31 days of my period is in season1
2013-06-01,2013-06-10,'season2',10 <-- 10 days of my period is in season2
我有以下 SQL 查询:
SELECT sid,sname,DATEDIFF(IF(send>@qend,@qend,send),IF(sstart<@qstart,@qstart,sstart))+1
FROM seasons WHERE sstart<=@qend AND send>=@qstart
我的问题是当我的时期(qstart,qend)在第一季之前开始或在数据库中的最后一季之后结束时,此查询不会返回我需要的这些尾巴。