Format de date personnalisé dans le script JSL (pour le générateur de requêtes)Objectif général : créer une requête dans le générateur de requêtes qui filtre sur une colonne de date et d'heure en extrayant uniquement les données des 7 derniers jours de l'heure actuelle. J'essaie d'utiliser une expression personnalisée dans Query Builder pour ce faire. Idéalement, ce serait simplement ce qui suit dans le filtre d'expression personnalisé, mais aucune donnée n'est extraite.
t1.TimeCol >= format((Today() - InDays(7)), "m/d/y h:m:s")
Il semble que Query Builder utilise un format de date et d'heure spécifique pour son instruction WHERE, 'ymd h:m:s' (c'est-à-dire '2022-07-07 11:13:55'), pour lequel JMP n'a pas de format intégré pour. Par conséquent, j'ai créé un format de date personnalisé illustré ci-dessous en utilisant cet exemple . Dans une table de données, il convertit une colonne de date et d'heure au format personnalisé comme prévu. J'ai du mal à appeler le format dans le code jsl car j'obtiens une erreur "Format inconnu : myNamespace:QueryDate". Un aperçu? Merci!
print(format(Today(), "m/d/y"));
print(format(Today(), "myNamespace:QueryDate"));
Format personnalisé :
Add Custom Functions(
New Custom Function(
"myNamespace",
"QueryDate",
Function( {inputVar},
{Default Local},
Char( Year( inputVar ) ) || "-" || Char( Month( inputVar ) ) || "-" ||
Char( Day( inputVar ) ) || " " ||
Char(Hour(inputVar)) || ":" || Char(Minute(inputVar)) || ":" || Char(Second(inputVar))
),
<<DESCRIPTION></DESCRIPTION>
Personnalisation de masseRe : Format de date personnalisé dans le script JSL (pour le générateur de requêtes)ou voir d'autres articles :
Résolu : problème de script de requête SQL avec le format de date - JMP User Community
Résolu : Sélection et filtrage interactifs des dates par SQL - JMP User Community
Re : Format de date personnalisé dans le script JSL (pour le générateur de requêtes)Si vous comparez une colonne datetime dans la base de données, vous avez besoin d'une valeur datetime pour la comparaison, mais le format renvoie une chaîne. Donc, cela ne fonctionnera pas pour autant que je puisse voir. Vous auriez besoin de convertir la chaîne datetime de la base de données en une valeur datetime.
Mais pour votre tâche, vous pouvez éviter ce problème en prenant simplement la date actuelle de la base de données et en soustrayant quelques jours, et en l'implémentant en tant qu'expression personnalisée dans le générateur de requêtes,
mais la syntaxe dépendra de la base de données.
Pour ANSI, cela peut ressembler à ceci :
t1.datetime > addday(now(), -7)
et pour Oracle, cela peut ressembler à
t1.datetime > sysdate - 7