全体的な目標: 現在時刻の過去 7 日間のデータのみを取得する日時列でフィルター処理を行うクエリをクエリ ビルダーで作成します。 これを行うためにクエリビルダーでカスタム式を使用しようとしています。 理想的には、カスタム式フィルターで次のようになりますが、データは取得されません。
t1.TimeCol >= format((Today() - InDays(7)), "m/d/y h:m:s")
クエリ ビルダーは WHERE ステートメントに特定の日時形式、'ymd h:m:s' (つまり '2022-07-07 11:13:55') を使用しているようですが、JMP にはその形式が組み込まれていませんために。 したがって、以下を使用してカスタム日付形式を作成しました。この例。 データ テーブルでは、日付時刻列が期待どおりカスタム形式に変換されます。 「不明な形式: myNamespace:QueryDate」エラーが発生するため、jsl コードで形式を呼び出すのに苦労しています。 何か洞察はありますか? ありがとう!
print(format(Today(), "m/d/y"));
print(format(Today(), "myNamespace:QueryDate"));
カスタム形式:
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>
データベースで日時列を比較する場合、比較には日時値が必要ですが、フォーマットは文字列を返します。 したがって、私が見る限り、これは機能しません。 データベースの日時文字列を日時値に変換する必要があります。
ただし、タスクの場合は、データベースから現在の日付を取得して数日を差し引き、これをクエリ ビルダーのカスタム式として実装するだけで、この問題を回避できます。
ただし、構文はデータベースによって異なります。
ANSI の場合は次のようになります。
t1.datetime > addday(now(), -7)
Oracle の場合は次のようになります。
t1.datetime > sysdate - 7