sql >> Databasteknik >  >> RDS >> Oracle

Hitta saknade datum med SQL

Detta ger dig alla saknade dagar i ett år (SQL Fiddle ).

all_dates genererar en lista över alla datum för 2012 (justera efter behov), och LEFT JOIN söker efter IS NULL eliminerar de datum som finns i din källtabell.

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
;

Se till att använda en bindningsvariabel istället för att hårdkoda datumet tre gånger.



  1. C# Oracle Stored Procedure Parameter Order

  2. Hur man visar ett datum i brittiskt format i SQL Server (T-SQL)

  3. MySQL exkludera rad

  4. Hur implementeras Oracles JDBC-frågetidsgräns?