Mysql
 sql >> Database >  >> RDS >> Mysql

Genera dati per intervalli di date, inclusi quelli che non sono presenti nei dati

Una tabella calendario ausiliaria funzionerà bene. La tabella del calendario più semplice possibile è una singola colonna di date.

create table calendar (
    cal_date date primary key
);

È possibile utilizzare un foglio di calcolo o SQL per popolarlo. Un join esterno su di esso porterà le date che non esistono nei tuoi dati. Limita le autorizzazioni con GRANT e REVOKE e usa tutti i mezzi necessari per assicurarti che le date che ti aspetti di essere lì siano effettivamente lì. Eseguo un rapporto giornaliero sul mio server per verificare che ci siano "n" righe e verificare la prima e l'ultima data.

Su alcune piattaforme, puoi generare una serie di date al volo e utilizzarle direttamente o in un CTE. PostgreSQL ha funzioni per questo; Non so se MySQL lo fa. Non sono difficili da scrivere, però, se vuoi farne uno tuo.