Problèmes pour incrémenter chaque date dans une colonneBonjour,
J'importe des données avec des horodatages à partir d'un fichier SQLite, voici un horodatage à titre d'exemple : 2024-04-12T18:55:42.464558Z. Étant donné que JMP ne prend pas en charge les microsecondes, je coupe les 8 derniers caractères et convertis la colonne au format horaire. Tout semble fonctionner jusqu'à présent. Cependant, lorsque j'essaie d'incrémenter chaque horodatage de 6 heures (différences de fuseau horaire), tous les horodatages sont simplement supprimés.
dt = Current Data Table(); // Gets the currently active data table
// Check if the "timestamp" column exists
If( Contains( dt << Get Column Names("String"), "timestamp"),
// Get the column reference
col = Column(dt, "timestamp");
// Truncate the last 8 characters from each value in the "timestamp" column
col << Set Each Value( Substr( Char( col ), 1, Length( Char( col ) ) - 8 ) );
// Convert the truncated timestamps to numeric datetime values
col << data type(numeric) << modeling type(continuous) << format("yyyy-mm-ddThh:mm:ss");
// Subtract 6 hours from each datetime value using Date Increment
For( i = 1, i <= N Rows(dt), i++,
If( !Is Missing( col[i] ),
col[i] = Date Increment( col[i], "Hour", -6 );
);
);
Show("Timestamps have been truncated and decremented by 6 hours.");
,
// Error handling if column does not exist
Show("Error: 'timestamp' column does not exist in the current data table.")
);Quelle serait la bonne façon de convertir les horodatages dans un format acceptable pour JMP et d'incrémenter chaque valeur de -6 ? Merci!
Automatisation et scriptsRe : Problèmes pour incrémenter chaque date dans une colonneSi vous ne voulez pas avoir de millisecondes, je pense que vous pouvez essayer de modifier votre requête SQL et de les supprimer ici.
Pour votre solution, avez-vous essayé que votre script fasse ce que vous attendez de lui jusqu'à la partie de soustraction ? Les colonnes sont-elles remplacées par des colonnes numériques, continues, correctement formatées ET JMP les reconnaît comme des dates (changez le format en Meilleur et obtenez-vous le format datenum de JMP).
Re : Problèmes pour incrémenter chaque date dans une colonneMerci pour votre contribution. J'ai compris. La fonction d'incrémentation de date nécessite une valeur numérique, l'horodatage doit donc être converti dans le type de données correct avant le traitement. J'ai également dû changer "Heure" en "Seconde". Voici le code fonctionnel si quelqu'un rencontre ce problème à l'avenir.
dt = Current Data Table(); // Gets the currently active data table
// Check if the "timestamp" column exists
If( Contains( dt << Get Column Names("String"), "timestamp"),
// Get the column reference
col = Column(dt, "timestamp");
// Process each row and remove the last 8 characters from the timestamp string
col << Set Each Value( Substr( :timestamp, 1, Length( :timestamp ) - 8 ) );
Show("Timestamps have been truncated.");
col << data type(numeric) << modeling type(continuous) << format("yyyy-mm-ddThh:mm:ss");
// Loop through each row in the column
For( i = 1, i <= N Rows(dt), i++,
// Read the value in the "timestamp" column for row i
timestamp_value = col[i];
numeric_datetime = Num( timestamp_value, Informat( "yyyy-mm-ddThh:mm:ss" ) );
numeric_datetime_adjusted = Date Increment(numeric_datetime, "second", -21600);
col[i] = numeric_datetime_adjusted;
);
,
// Error handling if column does not exist
Show("Error: 'timestamp' column does not exist in the current data table.")
);