Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Gerar dados para intervalo de datas, incluindo aqueles que não estão presentes nos dados


Uma tabela de calendário auxiliar funcionará bem. A tabela de calendário mais simples possível é uma única coluna de datas.
create table calendar (
    cal_date date primary key
);

Você pode usar uma planilha ou SQL para preenchê-lo. Uma junção externa trará as datas que não existem em seus dados. Limite as permissões com GRANT e REVOKE e use todos os meios necessários para garantir que as datas que você espera estar lá estejam realmente lá. Eu executo um relatório diário no meu servidor que garante que há 'n' linhas e verifica as datas mais antigas e mais recentes.

Em algumas plataformas, você pode gerar uma série de datas em tempo real e usá-las diretamente ou em um CTE. O PostgreSQL tem funções para isso; Eu não sei se o MySQL faz. Eles não são difíceis de escrever, no entanto, se você quiser rolar o seu próprio.