Tiene razón:SQL no facilita la identificación de datos faltantes. La técnica habitual es unir su secuencia (con espacios) contra una secuencia completa y seleccionar esos elementos en la última secuencia sin un socio correspondiente en sus datos.
Entonces, la sugerencia de @BenHoffstein mantener una tabla de fechas permanente es una buena idea.
Aparte de eso, puede crear dinámicamente ese rango de fechas con un tabla de enteros
. Asumiendo los integers
la tabla tiene una columna i
con números del 0 al 13 como mínimo, y que su tabla tenga su columna de fecha llamada datestamp
:
SELECT candidate_date AS missing
FROM (SELECT CURRENT_DATE + INTERVAL i DAY AS candidate_date
FROM integers
WHERE i < 14) AS next_two_weeks
LEFT JOIN my_table ON candidate_date = datestamp
WHERE datestamp is NULL;