如何将数字“字符串”转换为日期?我是新用户,我正在尝试将数字字符串转换为 jmp 日期格式。
我尝试通过连接字符串来创建一个新列,这样至少可以获得我想要的“ddmmyyy”输出:
(Substr( :START_DATE, 7, 2 ) || Substr( :START_DATE, 5, 2 )) ||Substr( :START_DATE, 1, 4 ) 但这并没有让我更进一步。
对此有什么想法吗?

回复:如何将数字字符串转换为日期?不抱歉,现在可以了
谢谢您的帮助
回复:如何将数字字符串转换为日期?实际上,当我在测试文件上运行它时,我在所有行中都丢失了数据。 我使用 JMP 12 - 这是原因吗?回复:如何将数字字符串转换为日期?谢谢 - 这有帮助回复:如何将数字字符串转换为日期?使用 Jim 的脚本和列公式的方式之间存在一些差异。
- 列公式根据旧数据创建新列。 如果添加新行,公式会自动运行以转换日期值。 除非先删除公式,否则无法删除旧数据列。
- 该脚本从脚本编辑器运行一次。 Jim 的脚本会就地转换列,将数字从原始表示形式更改为 JMP 日期时间表示形式。 如果在运行脚本后添加更多数据,则应使用列所需的 JMP 日期时间格式添加数据。
我认为您可能想要回答的问题是“我如何获得 JMP 不喜欢的这些日期,以及更好的方法是什么?”
当您将此数据(可能是从 CSV 文件)导入到 JMP 中时,或者当您将其输入到新表格中时,JMP 会看到一个数字并创建一个数字列。 让 JMP 看到日期为 20180315,而不是20,180,315 您需要告诉 JMP 将数据解释为 yyyymmdd 格式。 您可以使用数据表中的列属性来执行此操作,并指定信息和格式。
informat yyyymmdd format monddyyyyinformat yyyymmdd format monddyyyy信息 yyyymmdd 格式 monddyyyy
Input Format available after choosing FormatInput Format available after choosing Format选择格式后可用的输入格式
如果您使用文本文件导入从 CSV 文件获取数据,您还可以使用预览向导第二页上列上方的红色三角形指定列的格式。
Text import preview wizard second pageText import preview wizard second page文本导入预览向导第二页
最后,JMP 的日期时间值表示为自 1904 年 1 月 1 日以来的秒数。 https://www.jmp.com/support/help/14/date-time-functions.shtml有很多更多的信息。如果您看到一个毫无意义的巨大数字,它可能需要一种格式。 您可以更改输出格式,显示 03 或 Mar,因为内部表示保持不变。
回复:如何将数字字符串转换为日期?1.根据您提供的示例数据表,我发布的脚本工作正常。 查看附件
2. 12是格式显示的宽度。看:
帮助==>脚本索引==>数据表==>列脚本
描述和示例
回复:如何将数字字符串转换为日期?这个帖子是关于 (\d\d) 部分的。 括号创建组,\d 匹配单个数字。
这个帖子是关于\1-\2-\3。这些是插入到结果字符串中的反向引用和额外文本(连字符)。 这些数字指的是匹配的左括号。
正则表达式是一个强大的工具,网上有很多教程。
这个例子对于当前的问题来说有点过分了; JMP 的日期信息在您将数字转换为字符后就已经与您的数字格式相匹配。
回复:如何将数字字符串转换为日期?感谢分享。 我更好地理解这一点,但它只适用于第一排的我。 之后它只返回“缺失值”。
另外“12”在做什么
dt :开始日期< <格式( “ddmmyyy” , 12 ) ;
?
回复:如何将数字字符串转换为日期?谢谢 - 这有效。 但我并不完全确定我完全理解它。
是个“(\d\d\d\d)(\d\d)(\d\d)”说明输入格式?
“\1-\2-\3”在做什么?
感谢您的帮助
回复:如何将数字字符串转换为日期?吉姆 - 我一开始就错了。 yyyymmdd 格式无需正则表达式或 substr 即可工作:
Informat( Char( :START_DATE ), "yyyymmdd" )
回复:如何将数字字符串转换为日期?这是一个简单的脚本,可以完成与 Craige 相同的操作
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:start_date = Date MDY(
Num( Substr( Char( :start_date ), 5, 2 ) ),
Num( Right( Char( :start_date ), 2 ) ),
Num( Left( Char( :start_date ), 4 ) )
)
);
dt:start_date << format("ddmmyyyy",12);回复:如何将数字字符串转换为日期?你们真的很亲近;您需要 char(start_date) 从数字中获取字符串。 我尝试了一种稍微不同的列公式方法
Informat( Regex( Char( :START_DATE ), "(\d\d\d\d)(\d\d)(\d\d)", "\1-\2-\3" ), "ymd" )
并设置列的格式
Output format different from input formatOutput format different from input format输出格式与输入格式不同
JMP 首选的日期内部表示形式是 JMP 日期时间值,它是一个可以采用多种不同格式进行格式化的数值。