Comment scripter la date du mois en cours pour la compilation des donnéesSalut tout le monde,
J'ai le code suivant qui ne fonctionne pas :
// Current date
aujourd'hui = Text(Today(),"00000000");
// Obtain the month number format "MM"
numero_mois = Text(Month(aujourd'hui), "00");
// Obtain the year number - 1 format YYYY
numero_annee = Text(Year(aujourd'hui) - 1, "0000");
// Concatenate the result
date_debut_mois_actuel_Y = ("01" || numero_mois || numero_annee);
// Show the result
Show(date_debut_mois_actuel_Y);
dt << Select Where(:Date < date_debut_mois_actuel_Y);
dt << Delete rows;L'objectif est de sélectionner toutes les lignes de dt (Data Table) dont la date est < 01/mois en cours/année en cours -1, et de les supprimer.
Je comprends l'erreur, que je ne peux pas concaténer d'autres éléments que le caractère, mais comment obtenir la date sous le format 10/01/2022 (attente d'aujourd'hui par exemple), sans revenir sur le code et changer manuellement la date.
Le message d'erreur est le suivant : l'argument doit être un caractère à la ligne xxx lors de l'accès ou de l'évaluation de 'Concat', Bad Argument( numero_mois), "01" || /*###*/numéro_mois || /*###*/numero_annee/*###*/
A ce jour le code est (à modifier manuellement chaque mois) :
dt << select where(:name("date") < informat("01102022","DDMMYYYY"));
dt << Delete rows;Merci beaucoup !
Cordialement
Automatisation et scriptsRe : Comment scripter la date du mois en cours pour la compilation des donnéesVous pouvez obtenir la date actuelle en utilisant Aujourd'hui() et une option pour obtenir le premier jour du mois consiste à utiliser Incrément de date()
Names Default To Here(1);
Date Increment(Today(), "Month", 0, "start");
puis en fonction de vos données, vous pouvez l'utiliser directement sans effectuer de transformation Char (dans JMP, vous utilisez Carboniser() pas Text() quel ChatGPT ? essaie d'utiliser).
Re : Comment scripter la date du mois en cours pour la compilation des donnéesVous rendez le problème plus complexe que nécessaire.Voici comment je procéderais :
dt << select where( :Date < Date MDY( 1, Month( today ), Year( Today() ) - 1 ) );
try( dt << delete rows );
Re : Comment scripter la date du mois en cours pour la compilation des donnéesSalut txnelson et jthi, merci pour votre aide, le code suivant fonctionne
dt << select where( :Date < Date DMY( 1, Month( today ), Year( Today() ) - 1 ) );
Je viens de changer la Date MDY en Date DMY.
On apprend tous les jours avec JMP
.
Cordialement !
Re : Comment scripter la date du mois en cours pour la compilation des donnéesChers tous,
Aujourd'hui je me suis rendu compte que le code ne semble pas fonctionner lorsque deux mois se chevauchent, exemple aujourd'hui : 06/11/2023 - 7 jours = 30/10/2023.
Je n'ai pas trouvé la solution, dois-je mettre en avant les conditions ? (en utilisant "si").
Merci !
Cordialement
Re : Comment scripter la date du mois en cours pour la compilation des donnéesJe ne sais pas exactement ce que vous entendez par « chevauchement de deux mois » ? Vous ne vouliez pas supprimer toutes les lignes antérieures au premier jour du mois en cours de l'année dernière ? D'où vient le -7 jours ?
Names Default To Here(1);
dt = New Table("Dates",
Add Rows(1000),
New Column("Date", Numeric, Continuous, Format("yyyy-mm-dd", 10), Set Each Value(
Today() - In Days(Row())
))
);
dt << Sort(By(:Date), Replace Table, Order(Ascending));
dt << Select Where(
:Date < Date Increment(Today() - In Years(1), "Month", 0, "start");
);
// dt << select where(:Date < Date DMY(1, Month(Today()), Year(Today()) - 1));
/*
dt << Previous Selected;
*/Re : Comment scripter la date du mois en cours pour la compilation des donnéesSalut Jthi,
Je voudrais supprimer toutes les lignes avant aujourd'hui - 7 jours (quels que soient le mois et l'année en cours)
.
Merci !
Cordialement
Re : Comment scripter la date du mois en cours pour la compilation des donnéesVoici quelques options sur la façon dont vous pouvez sélectionner ces lignes. Un exemple de tableau est présent afin qu'il soit plus facile de voir quelles lignes sont sélectionnées
Names Default To Here(1);
dt = New Table("Dates",
Add Rows(1000),
New Column("Date", Numeric, Continuous, Format("yyyy-mm-dd", 10), Set Each Value(
Today() - In Days(Row())
))
);
dt << Sort(By(:Date), Replace Table, Order(Ascending));
dt << Select Where(
:Date < Date Increment(Today() - In Days(7), "Day", 0, "start");
);
// or using Date Difference
// dt << Select Where(Date Difference(:Date, Today(), "Day") > 7);
// comparison between date and today (depending in your data, removing time of day might be needed)
// dt << Select Where(:Date - Time Of Day(:Date) < Today() - In Days(7) - Time Of Day(Today()));
/*
dt << Previous Selected;
*/Re : Comment scripter la date du mois en cours pour la compilation des donnéesSalut Jthi,
Merci beaucoup, ce code
dt << Select Where(Date Difference(:Date, Today(), "Day") > 7);
fonctionne parfaitement !
Cordialement
Re : Comment scripter la date du mois en cours pour la compilation des donnéesPouvez-vous expliquer le processus de création de scripts pour la date du mois en cours afin de garantir une compilation précise des données ?
Re : Comment scripter la date du mois en cours pour la compilation des donnéesSi vous voulez juste le premier jour du mois, utilisez Today() pour obtenir la date d'aujourd'hui, puis Month and Year avec Date DMY pour construire votre date.
now = Today();
first_of_month = Date DMY(1, Month(now), Year(now));
Show(As Date(first_of_month));