SAS日期时间格式化为POSIX

问题描述:

我希望SAS以POSIX格式格式化日期时间。以下给出“2009-11-25 14:44:56”我怎样才能显示毫秒?SAS日期时间格式化为POSIX

proc format; 
    picture POSIX other='%0Y-%0m-%0d %0H:%0M:%0S' (datatype=datetime); 
run; 
data test; 
    mydatetime='25nov2009 14:44:56.300'dt; 
    format newdt POSIX.; 
    newdt=mydatetime; 
    put mydatetime= newdt=; 
run; 

编辑:我甚至接受者的任何方式,以日期时间格式化为YYYY-MM-DD HH:M:SS.sss(ISO8601),惊人的,我不能在不到1分钟内找到这个,你想

E8601DT23.3应该显示自己的价值,除了额外的“T”分隔符; SAS似乎需要这样做。如果你把一个字符值,你可以很容易地删除“T”;如果您尝试使用格式化的数值,我认为您必须忍受它。上ISO8601

data test; 
    mydatetime='25nov2009 14:44:56.356'dt; 
    format newdt E8601DT23.3; 
    newdt=mydatetime; 
    put mydatetime= newdt=; 
run; 

SAS指南:

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm

编辑:SAS-L来通过在这一个(http://listserv.uga.edu/cgi-bin/wa?A1=ind1303c&L=sas-l#8)。如果你有9.3这应该工作(不在9.2或更早版本)。

proc format; 
    picture POSIX other='%0Y-%0m-%0d %0H:%0M:%0s' (datatype=datetime); 
run; 
data test; 
    mydatetime='25nov2009 14:44:56.300'dt; 
    format newdt POSIX23.3; 
    newdt=mydatetime; 
    put mydatetime= newdt=; 
run; 

小s,并包括小数,它应该按预期工作。感谢数据null的提示。

+0

谢谢,乔我终于也找到了。反正我仍然无法找到自己的格式处理毫秒... – statquant 2013-03-21 15:23:09

+1

是的,这似乎不可能出于某种原因 - 对不起! – Joe 2013-03-21 15:23:29

+2

编辑为包含处理毫秒的版本9.3的更新。 – Joe 2013-03-21 15:42:08

此解决方案仅适用于10-59秒的值。它不适用于第二个0-9的值。第二个0-9的值没有前导零。