Date courte () créant une colonne de caractères verrouillésLorsque je crée une colonne "date" dans le script ci-dessous, cela crée une colonne verrouillée (je ne peux donc pas modifier le format).Short Date() dans la formule semble être le problème.
La colonne de temps reste numérique après l'application de la formule.
Comment puis-je faire en sorte que la "Date" reste numérique ?
La date est plus tard dans un calendrier () pour définir le calendrier pour afficher uniquement les jours où des données sont présentes.
_____________________________________________________
//Open
dt_run = Open( "data.jmp");
dt_run << New Column( "Date", Numeric, Continuous, Format("m/d/y"), Input Format( "m/d/y h:m:s"));
Column( "Date") << Add Column Properties( Formula( Short Date( :Name( "Date & Time" ) ) ) );
dt_run << New Column( "Time", Numeric, Continuous, Format("h:m"), Input Format( "m/d/y h:m:s"));
Column( "Time") << Add Column Properties( Formula( Time Of Day( :Name( "Date & Time" ) ) ) );Merci
Mat
Re : Date courte () créant une colonne de caractères verrouillésVous pouvez également le faire en utilisant uniquement le nombre en changeant la date et l'heure de secondes en jours et en plancher.
Names Default to Here( 1 );
dt = New Table( "Test",
Add Rows( 1 ),
New Column( "DateTime",
Numeric,
"Continuous",
Format( "m/d/y h:m:s", 23, 0 ),
Formula( Today() ),
)
);
dt << New Column("Date",
Numeric,
"Continuous",
Format( "m/d/y", 23 ),
Formula(
num_s_per_day = 24*60*60; // # seconds/day
Floor(
:DateTime // take the date time which is a number in seconds
/ num_s_per_day // turn it into days by dividing
) // this will round down to the day
* num_s_per_day // turn it back into seconds (a date time)
),
);
Re : Date courte () créant une colonne de caractères verrouillésCompte tenu d'un peu plus de réflexion sur votre JSL ....... vous pouvez utiliser ce qui suit pour remplir votre colonne Date
Column( "Date") << set Formula( informat(Short Date( :Name( "Date & Time" ) ), "mm/dd/yyyy") );
Il utilise simplement la fonction Informat(), qui prend une chaîne littérale et renvoie une valeur numérique de date JMP
Re : Date courte () créant une colonne de caractères verrouillésJim,
Merci pour cette réponse si bien expliquée. Vos messages sont toujours informatifs, éducatifs et faciles à suivre.
MatRe : Date courte () créant une colonne de caractères verrouillésLes problèmes que vous rencontrez concernent la compréhension de ce que la fonction Short Date() renvoie.Il ne renvoie pas de valeur de date JMP, qui correspondrait au nombre de secondes depuis 12h00, le 1er janvier 1904, mais renvoie plutôt une chaîne littérale de la partie date d'une valeur de date JMP.Pour illustrer cela, le JSL suivant affiche ce que renvoie Short Date() :
show(short date(today())); <BR />
et ça revient
Short Date(Today()) = "12/03/2019";
Et puisque dans votre JSL, il a renvoyé une chaîne littérale, il a changé la colonne Date en une colonne de caractères.
Vraiment, ce que vous voulez, c'est utiliser la fonction DateMDY() pour créer la valeur de date.
Vous trouverez ci-dessous une version retravaillée de votre code qui fait ce que je pense dont vous avez besoin :
Names default to here(1);
dt_run = new table("data",add rows(1), new column("Date & Time",formula(today()),format("m/d/y h:m:s")));
dt_run << New Column( "Date", Numeric, Continuous, Format("m/d/y"));
Column( "Date") << set Formula( DateMDY(Month(:Name( "Date & Time" )),Day(:Name( "Date & Time" )),Year(:Name( "Date & Time" )) ) );
dt_run << New Column( "Time", Numeric, Continuous, Format("h:m"));
Column( "Time") << set Formula( Time Of Day( :Name( "Date & Time" ) ) );