jsl 中的日期函數。我有一個表,其中包含所有行的時間戳。
但我只需要最近 7 天的數據。 有沒有一種簡單的方法可以刪除過去 7 天的所有數據。
jsl 新手,任何輸入都會有幫助。
回复: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 );
回复:jsl 中的日期函數。抱歉我沒能早點發現這一點。 您需要 Run Formulas() 以確保在 SelectWhere() 之前計算所有公式。
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 )
);
回复: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>
沒有選擇任何內容。我嘗試使用大於、小於和等於運算符。似乎沒有任何效果。
回复: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 );
回复: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 );
回复:jsl 中的日期函數。您能否顯示您正在使用的不起作用的確切代碼,並且您能否提供數據表的示例?
回复:jsl 中的日期函數。感謝您的回复。正如我上面提到的,我創建了一個新專欄並打印了 Today() - In Days(7) ,效果非常好。
此後,如果我嘗試比較兩列,我看不到任何結果/錯誤。 所有日期列都是數字。
回复:jsl 中的日期函數。我沒有可用的 JMP 12 來驗證 In Days() 函數是否可用。然而,由於 In Days() 所做的只是確定一天中的秒數,然後將結果乘以 (7) 中的數字,因此您可以將公式更改為:
today()-7*60*60*24
回复:jsl 中的日期函數。這段腳本不適合我。
“ Today() - Indays(7) 部分可以工作,但日期比較出現問題。
調試器沒有顯示任何錯誤,但當我運行它時沒有任何反應。 我正在使用 JMP 12。 那是問題嗎?
回复:jsl 中的日期函數。dt << select where( today() - In Days( 7 ) < :Your date column );
dt << delete rows;
這將選擇日期列(替換 JSL 第一行中的名稱)小於當前日期時間 - 7 天的所有行。然後刪除行將刪除所有選定的行。
如果您希望刪除午夜之前 7 天的行,而不是該時間點 (today()) 之前的 7 天,那麼您需要從 Today() 函數值中減去當前時間。
dt << select where( today() - Time of Day( today() ) - In Days( 7 ) < :Your date column );
dt << delete rows;