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) がデータベースで最初のシーズンの前に開始するか、最後のシーズンの後に終了する場合です。このクエリは、必要なこれらのテールを返しません。