ホームページ >データベース >mysql チュートリアル >SQL で連続する日付範囲を識別するにはどうすればよいですか?
一連の日付を含む列内の連続する日付範囲を識別するには、SQL を使用して開始日と終了日を効率的に抽出できます。
次のことを考慮してください。データセット:
InfoDate 2013-12-04 2013-12-05 2013-12-06 2013-12-09 2013-12-10 2014-01-01 2014-01-02 2014-01-03 2014-01-06 2014-01-07 2014-01-29 2014-01-30 2014-01-31 2014-02-03 2014-02-04
目標は、連続する各日付範囲の開始日と終了日を抽出することです。結果は次のとおりです。
StartDate EndDate 2013-12-04 2013-12-06 2013-12-09 2013-12-10 2014-01-01 2014-01-03 2014-01-06 2014-01-07 2014-01-29 2014-01-31 2014-02-03 2014-02-04
単純化された効率的な SQL ソリューションは、次の手順:
SQLこれを実現するためのクエリは次のとおりです:
WITH t AS ( SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i FROM @d GROUP BY InfoDate ) SELECT MIN(d),MAX(d) FROM t GROUP BY DATEDIFF(day,i,d)
以上がSQL で連続する日付範囲を識別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。