Comment boucler lors d’une requête de date ?Salut tout le monde
J'essaie d'interroger la base de données à l'aide de JMP. Dans ma requête, je modifie manuellement la valeur dateNow du jour 1 au jour 30, puis j'exécute le script. Mais j’avais besoin d’en créer un autre qui tournerait en boucle tout au long des jours.
Comment puis-je créer une boucle qui interroge chaque date de juillet 2023 à janvier 2024 ?
dateNow = "01/11/2024";
dt = Open Database( "DSN=databasename;UID=root;PWD=admin;APP=JMP;DATABASE=dbSample").
"select distinct name, age, sex, address
from db1
where date between '" || dateNow || " 00:00:00 AM' and '" || dateNow || " 11:59:59 PM'",
"raw" );
Automatisation et scriptsRe : Comment boucler lors d'une requête de date ?Voici ma solution.
Names Default To Here( 1 );
For( theDate = Informat( "01/07/2023", "d/m/y" ), theDate <= Informat( "31/1/2024", "d/m/y" ),
theDate = theDate + In Days( 1 ),
// Create the dateNow variable from the index variable "theDate"
dateNow = Format( theDate, "d/m/y" );
dt = Open Database( "DSN=databasename;UID=root;PWD=admin;APP=JMP;DATABASE=dbSample").
"select distinct name, age, sex, address
from db1
where date between '" || dateNow || " 00:00:00 AM' and '" || dateNow || " 11:59:59 PM'",
"raw" );
);
Re : Comment boucler lors d'une requête de date ?En fonction de votre SQL, vous pourrez peut-être déduire l'index de la date (cela peut nécessiter un tronquage/modifier un peu votre requête)
Names Default To Here(1);
start_date = 01Jul2023;
end_date = 31Jan2024;
datecount = Date Difference(start_date, end_date, "Day");
Show(As Date(start_date + In Days(datecount)));
sql_template = "\[select sysdate - ^i^ startdate, sysdate - ^i - 1^ enddate from dual]\";
For(i = 1, i <= datecount, i++,
cur_sql = Eval Insert(sql_template);
Show(cur_sql);
);
De plus, vous souhaiterez probablement concaténer les résultats de la requête dans la requête et l'ajout d'une simple journalisation d'impression peut être utile (j'imprime généralement au moins : l'index/la date actuelle qui est interrogée, le nombre de lignes que vous avez récupérées et la durée de la requête. ).