除非有真正的理由将目标日期值保留为字符列,否则我建议您将其转换为 JMP 日期列。
Names Default To Here( 1 );
dt = Current Data Table();
dt << new column( "Target Date", format( "ddmonyyyy") );
for each row(
if( :"Time (Months)"n <= 3,
:Target Date =
Informat( :Available Date, "ddmonyyyy" ) + In Days( 4 ),
:Target Date =
Informat( :Available Date, "ddmonyyyy" ) + In Days( 7 )
)
);

通过下面的修改很容易将上面的输出转换为字符
Names Default To Here( 1 );
dt = Current Data Table();
dt << new column( "Target Date", character );
for each row(
if( :"Time (Months)"n <= 3,
:Target Date = format(
Informat( :Available Date, "ddmonyyyy" ) + In Days( 4 ),
"ddmonyyyy"
),
:Target Date = format(
Informat( :Available Date, "ddmonyyyy" ) + In Days( 7 ),
"ddmonyyyy"
)
)
);

如果输出格式需要与输入数据格式完全相同,则以下内容将完成
Names Default To Here( 1 );
dt = Current Data Table();
dt << new column( "Target Date", character );
monthList = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP",
"OCT", "NOV", "DEC"};
for each row(
if( :"Time (Months)"n <= 3,
temp = Informat( :Available Date, "ddmonyyyy" ) + In Days( 4 ),
temp = Informat( :Available Date, "ddmonyyyy" ) + In Days( 7 )
);
:Target Date = Substr( "0", Length( Char( Day( temp ) ) ) ) ||
Char( Day( temp ) ) || "-" || monthList[Month( temp )] || "-" ||
Char( Year( temp ) );
);

如果您想使用公式而不是 For Each Row,这将适用于上述输出的公式
monthList = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
If( :"Time (Months)"n <= 3,
temp = Informat( :Available Date, "ddmonyyyy" ) + In Days( 4 ),
temp = Informat( :Available Date, "ddmonyyyy" ) + In Days( 7 )
);
Substr( "0", Length( Char( Day( temp ) ) ) ) || Char( Day( temp ) ) || "-" || monthList[Month( temp )] || "-" ||
Char( Year( temp ) );附表将 4 天添加到您的可用日期列以获得目标日期。步骤:将可用日期的数据类型更改为具有适当日期格式的数字/连续;然后使用 Date Increment 函数将 4 天添加到可用日期,最后更改生成的目标日期列的格式以匹配您在可用日期列中使用的内容。
一个附加说明 - 在您的示例中,看起来您增加了一周(7 天而不是 4 天)。
我有一个 JSL 脚本,可以定期从 Access 数据库中提取数据。
Access 数据库包含一个日期列“可用日期”,其中包含 dd-Mon-YYYY(例如, 2018 年 4 月 12 日)格式。 我想要做的是在 JMP 中创建一个新列“目标日期”,为每行的“可用日期”中的日期添加 x 天数。
例如:在下图中,目标日期等于可用日期 + 4 天。 我正在尝试根据可用日期自动计算目标日期。 天数基于“时间(月)”列。

这是我到目前为止所尝试过的,显然是行不通的。 我想我需要将“可用日期”列转换为数字数据类型,然后添加天数并转换回字符?
dt << New Column("Target Date", "Character", "Nominal");
dt << For Each Row(
IF (:"Time (Months)" <= 3, :"Target Date" = :"Available Date" + 4 ),
IF (:"Time (Months)" > 3, :"Target Date" = :"Available Date" + 7 )
);