JSLの日付関数。すべての行にタイムスタンプがあるテーブルがあります。
ただし、必要なのは過去 7 日間のデータだけです。 過去 7 日間を過ぎたデータをすべて削除する簡単な方法はありますか。
jsl を初めて使用する場合は、入力が役に立ちます。
Re: JSLの日付関数について。結果を表示する完全なスクリプトは次のとおりです。
Names Default to Here( 1 );
dt = New Table( "test",
add rows( 100 ),
New Column( "start date",
formula( Random Uniform( Today() - In Days( 12 ), Today() ) ),
Format( "m/d/y", 10 )
)
);
dt:start date << delete formula;
New Column( "START_SHORT_DATE",
Formula( :start date - Time Of Day( :start date ) ),
Format( "m/d/y", 10 ),
);
New Column( "Todays Date",
Formula( Today() - Time Of Day( Today() ) ),
Format( "m/d/y", 10 )
);
New Column( "Ref Date",
Formula( Today() - In Days( 7 ) ),
Format( "m/d/y", 10 ),
);
Current Data Table() << select where( :Ref Date < :START_SHORT_DATE );
Re: JSLの日付関数について。申し訳ありませんが、以前は聞き取れませんでした。 Select Where() の前にすべての数式が確実に評価されるようにするには、Run Formulas() が必要です。
Clear Symbols();
Delete Symbols();
clear globals();
//Open master data list
S = Open("~/Downloads/sample.xlsx");
New Column( "START_SHORT_DATE",
Formula( :start date - Time Of Day( :start date ) ),
Format( "m/d/y", 10 ),
);
New Column( "Todays Date",
Formula( Today() - Time Of Day( Today() ) ),
Format( "m/d/y", 10 )
);
New Column( "Ref Date",
Formula( Today() - In Days( 7 ) ),
Format( "m/d/y", 10 ),
);
s << run formulas();
s << select where( :Ref Date < :START_SHORT_DATE );
ところで、これを行うには実際にはすべての数式列が必要というわけではありません。
Clear Symbols();
Delete Symbols();
Clear Globals();
//Open master data list
S = Open( "~/Downloads/sample.xlsx" );
s << select where(
(Today() - Time Of Day( Today() ) - In Days( 7 )) < :start date - Time Of Day( :start date )
);
Re: JSLの日付関数について。まったく同じコードをコピーして実行してみました。すべての列が適切に作成されています。しかし、次の行は機能していないようです。
」
<SPAN class="token function">current data table</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> select where</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Ref Date <SPAN class="token operator"><</SPAN> <SPAN class="token punctuation">:</SPAN>START_SHORT_DATE <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
何も選択されません。「より大きい」、「より小さい」、および「等しい」演算子を使用してみました。何も機能しないようです。
Re: JSLの日付関数について。問題は、その関数が短い日付()と略称の日付()日付値ではなく文字列を返します。 日付値 (数値) を文字列と比較することはできません。
代わりにこれを試してください:
New Column( "START_SHORT_DATE",
Formula( :start date - Time Of Day( :start date ) ),
Format( "m/d/y", 10 ),
);
New Column( "Todays Date",
Formula( Today() - Time Of Day( Today() ) ),
Format( "m/d/y", 10 )
);
New Column( "Ref Date",
Formula( Today() - In Days( 7 ) ),
Format( "m/d/y", 10 ),
);
current data table() << select where( :Ref Date < :START_SHORT_DATE );
Re: JSLの日付関数について。コードは次のとおりです -
Clear Symbols();
Delete Symbols();
clear globals();
//Open master data list
S = Open("C:\Enthu\sample.xlsx","invisible");
current data table(S);
New Column( "START_SHORT_DATE", Numeric, Formula( Short Date( :start date ) ), );
New Column("Todays Date", Character,Formula(Abbrev Date(today())));
New Column("Ref Date", Character,Formula(Abbrev Date(today()-In Days(7))));
S << select where( :Ref Date < :START_SHORT_DATE );
Re: JSLの日付関数について。使用している動作しないコードを正確に示していただけますか。また、データ テーブルのサンプルを提供していただけますか?
Re: JSLの日付関数について。ご返答ありがとうございます。上で述べたように、新しい列を作成し、today() - In Days(7) を出力しましたが、これは完全に正常に機能します。
この後、2 つの列を比較しようとすると、結果やエラーが表示されません。 すべての日付列は数値です。
Re: JSLの日付関数について。In Days() 関数が利用可能かどうかを確認するために利用できる JMP 12 がありません。ただし、In Days() は 1 日の秒数を決定し、その結果に (7) の数値を乗算するだけなので、式を次のように変更するだけです。
today()-7*60*60*24
Re: JSLの日付関数について。このスクリプトは私にとっては機能しません。
「today() - Indays(7)」部分は機能しますが、日付の比較に問題があります。
デバッガーにはエラーが表示されませんが、これを実行しても何も起こりません。 JMP12を使用しています。 問題ありますか?
Re: JSLの日付関数について。dt << select where( today() - In Days( 7 ) < :Your date column );
dt << delete rows;
これにより、日付列 (JSL の最初の行の名前を置き換えます) が現在の日時 (7 日) より小さいすべての行が選択されます。次に、行の削除により、選択されたすべての行が削除されます。
行をこの時点 (today()) の 7 日前ではなく、真夜中の 7 日前に削除する場合は、today() 関数の値から現在の時刻を減算する必要があります。
dt << select where( today() - Time of Day( today() ) - In Days( 7 ) < :Your date column );
dt << delete rows;