Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Encontrar datas ausentes usando SQL


Isso fará com que todos os dias ausentes por um ano (SQL Fiddle ).

all_dates gera uma lista de todas as datas de 2012 (ajuste conforme necessário) e o LEFT JOIN verificando IS NULL elimina as datas que existem em sua tabela de origem.
WITH all_dates AS (
  SELECT TO_DATE('01-jan-2012') + ROWNUM - 1 AS d
  FROM dual
  CONNECT BY ROWNUM <= ADD_MONTHS(TO_DATE('01-jan-2012'), 12 ) - TO_DATE('01-jan-2012')
)
SELECT all_dates.d
FROM all_dates
LEFT JOIN t ON ( t.d = all_dates.d )
WHERE t.d IS NULL
ORDER BY all_dates.d
;

Certifique-se de usar uma variável de ligação em vez de codificar a data três vezes.