Mysql
 sql >> Base de données >  >> RDS >> Mysql

Générer des données pour une plage de dates, y compris celles qui ne sont pas présentes dans les données

Une table de calendrier auxiliaire fonctionnera bien. Le tableau de calendrier le plus simple possible est une seule colonne de dates.

create table calendar (
    cal_date date primary key
);

Vous pouvez utiliser une feuille de calcul ou SQL pour le remplir. Une jointure externe apportera les dates qui n'existent pas dans vos données. Limitez les autorisations avec GRANT et REVOKE, et utilisez tous les moyens nécessaires pour vous assurer que les dates auxquelles vous vous attendez sont bien là. J'exécute un rapport quotidien sur mon serveur qui s'assure qu'il y a 'n' lignes et vérifie les dates les plus anciennes et les plus récentes.

Sur certaines plateformes, vous pouvez générer une série de dates à la volée, et l'utiliser directement ou dans un CTE. PostgreSQL a des fonctions pour cela; Je ne sais pas si MySQL le fait. Ils ne sont pas difficiles à écrire, cependant, si vous voulez créer le vôtre.