SAS:10 长度后 SAS 中的子字符串 TIme

SAS: Substring TIme in SAS after 10 length

我尝试按以下方式对时间进行子字符串处理:

HH = substrn(Time,1,2); MM = substrn(Time,4,2); SS = substrn(Time,7,2); MSS = substrn(Time,10,3);

但是,SAS 看不到最后一部分 (MSS),它应该是最后 3 位数字,即毫秒。时间变量的格式为 time20.3。并显示长度为 8。 我相信这是长度的错,但我如何将它增加到 10?我只知道它如何用于非数字变量。

最佳,M

如果 TIME 的格式为 TIME20.3,则它是一个数值变量。数值变量的存储长度不可能为 10,因为 SAS 将所有数字存储为 64 位浮点数。

只需使用函数即可获取零件。

 hour = hour(time);
 minute = minute(time);
 second = second(time);
 milliseconds = 1000*(time - int(time) );

如果您不自己将其转换为字符,则 SAS 将使用 BEST12 自动将其转换。格式代替。因此,您会看到 '34007.542699'.

这样的值,而不是像 '09:26:47.543' 这样的值

您可以使用 VVALUE() 函数查看格式化值或 PUT() 函数。