您好,我有一个列交易日期,需要将其转换为该周的星期一的日期。 我想出了下面的公式,并且可以达到我需要的正确日期。 然而,它自动成为一种字符格式,无论我将其切换到名义格式多少次,它都会不断地变回字符。 有谁知道为什么? 谢谢你!

作为@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 中使用日期、时间、日期时间和持续时间