Gesamtziel: Erstellen Sie eine Abfrage im Query Builder, die nach einer Datums-/Uhrzeitspalte filtert und nur Daten aus den letzten 7 Tagen der aktuellen Uhrzeit abruft. Ich versuche, dazu einen benutzerdefinierten Ausdruck im Query Builder zu verwenden. Im Idealfall wäre es im benutzerdefinierten Ausdrucksfilter nur Folgendes, es werden jedoch keine Daten abgerufen.
t1.TimeCol >= format((Today() - InDays(7)), "m/d/y h:m:s")
Es scheint, dass Query Builder ein bestimmtes Datums-/Uhrzeitformat für seine WHERE-Anweisung verwendet, „ymd h:m:s“ (z. B. „2022-07-07 11:13:55“), für das JMP kein integriertes Format hat für. Deshalb habe ich ein benutzerdefiniertes Datumsformat erstellt, das unten gezeigt wird dieses Beispiel . In einer Datentabelle konvertiert es wie erwartet eine Datums-/Uhrzeitspalte in das benutzerdefinierte Format. Ich habe jedoch Schwierigkeiten, das Format im JSL-Code aufzurufen, da ich die Fehlermeldung „Unbekanntes Format: myNamespace:QueryDate“ erhalte. Irgendwelche Erkenntnisse? Danke!
print(format(Today(), "m/d/y"));
print(format(Today(), "myNamespace:QueryDate"));
Benutzerdefiniertes Format:
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>
Wenn Sie eine Datetime-Spalte in der Datenbank vergleichen, benötigen Sie für den Vergleich einen Datetime-Wert, das Format gibt jedoch eine Zeichenfolge zurück. Das wird also meines Erachtens nicht funktionieren. Sie müssten die Datums-/Uhrzeitzeichenfolge in der Datenbank in einen Datums-/Uhrzeitwert konvertieren.
Für Ihre Aufgabe können Sie dieses Problem jedoch vermeiden, indem Sie einfach das aktuelle Datum aus der Datenbank nehmen, einige Tage subtrahieren und dies als benutzerdefinierten Ausdruck im Query Builder implementieren.
Die Syntax hängt jedoch von der Datenbank ab.
Für ANSI könnte es so aussehen:
t1.datetime > addday(now(), -7)
und für Oracle könnte es so aussehen
t1.datetime > sysdate - 7