您好,我有一個列交易日期,需要將其轉換為該週的星期一的日期。 我想出了下面的公式,並且可以達到我需要的正確日期。 然而,它自動成為一種字元格式,無論我將其切換到名義格式多少次,它都會不斷地變回字元。 有誰知道為什麼? 謝謝你!

作為@jthi指出,您的 WR_Date 欄位必須是包含一天中的時間的日期時間列。 您需要從中減去它才能得到日期值。
您可以在公式中做到這一點:

隨附的數據表有一個範例。
您必須建立新腳本並將其新增至那裡。 我的範例腳本只是腳本編輯器中計算的一個快速範例。 您還必須將其變更為使用列腳本。
也許這個「完整」範例可以更好地展示如何編寫腳本(這也是周一計算的附加公式)。 您可以從檔案/新建/腳本開啟新腳本並將其複製貼上到那裡。 您可以將「OnlyDate」列建立中的 :DateTime 替換為您的列名稱。</CODE></P><P> </P><PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = New Table("firstofweek",
Add Rows(100),
Compress File When Saved(1),
New Column("DateTime",
Numeric,
"Continuous",
Format("Monddyyyy h:m:s", 22, 0),
Input Format("Monddyyyy h:m:s", 0),
Formula(Today() - In Days(90-Row())),
Set Display Width(111)
)
);
Column(dt, "DateTime") << Delete Formula;
dt << New Column("OnlyDate", Numeric, "Continuous", Format("Monddyyyy h:m:s", 22, 0),
<< Formula(:DateTime - Time Of Day(:DateTime))
);
dt << New Column("FirstOfWeek1", Numeric, "Continuous", Format("Monddyyyy h:m:s", 22, 0),
<< Formula(:DateTime - In Days(Day Of Week(:DateTime) - 2) - Time Of Day(:DateTime))
);
dt << New Column("FirstOfWeek2", Numeric, "Continuous", Format("Monddyyyy h:m:s", 22, 0),
<< Formula(Date Increment(:DateTime, "Week", 0, "start") + In Days(1))
);
此外,JMP 腳本指南和腳本索引也是優秀的腳本來源。
您可以建立一個公式,從您的日期中刪除小時、分鐘和秒:
Names Default To Here(1);
dateToday = Today();
Show(As Date(dateToday));
dateToday_noSeconds = dateToday - TimeOfDay(dateToday);
Show(As Date(dateToday_noSeconds));
或直接使用 JMP(右鍵點選列名稱 -> 新公式列 -> 日期時間 -> 日期):

謝謝傑夫! 剝離按鈕對我來說是個新事物。
我有一個以下問題 - 刪除短日期功能後,我將新的周日期放入表格中,但它以某種方式多次顯示相同的日期,而通常它會顯示唯一的日期,如下圖所示。 不知道為什麼。 我能想到的一件事可能是,我用來創建新一周開始日期的原始日期列的格式類似於“2018/01/01 12:13:05 AM”。 您知道修復表格的方法嗎? 謝謝你!

你好@喬安,這是因為函數Short Date被指定回傳一個字串,
請參閱附件中的文件庫。
因此,您應該放棄該函數以使其保持日期,並使用列格式來控制其外觀。

這短 Date() 函數傳回一個字串,該字串將日期或日期時間值格式化為 m/d/y 格式。
如果您想要 JMP 日期值,只需刪除 Short Date(),然後將列上的格式設為 m/d/y。
提示:使用剝離按鈕
從公式編輯器中的選擇中刪除外部函數。
更多這裡:在 JMP 中使用日期、時間、日期時間和持續時間