sql >> データベース >  >> RDS >> Mysql

MySQL:日付範囲の間に欠落している日付を見つける

    これは2番目の回答です。別途投稿します。

    SELECT DATE(r1.reportdate) + INTERVAL 1 DAY AS missing_date
    FROM Reports r1
    LEFT OUTER JOIN Reports r2 ON DATE(r1.reportdate) = DATE(r2.reportdate) - INTERVAL 1 DAY
    WHERE r1.reportdate BETWEEN '2011-01-01' AND '2011-04-30' AND r2.reportdate IS NULL;
    

    これは、次の日付の行が存在しないように日付を報告する自己結合です。

    これにより、ギャップ内の最初の日が検出されますが、複数日の実行が欠落している場合、ギャップ内のすべての日付が報告されるわけではありません。



    1. SQLiteで外部キーサポートを有効にする方法

    2. MySQL FIND_IN_SETまたは同等のものにインデックスを使用させることはできますか?

    3. MySQLでJSON_EXTRACTを使用して、引用符なしの文字列を取得するにはどうすればよいですか?

    4. 復元エラーに関するmysqldumpの問題:'インポートする前にテーブルスペースを破棄してください'