我有一个datetime变量,其格式如下:
27AUG2014:08:56:26.959136
如何重新格式化它,使其如下所示:
2014-08-27:08:56:26.959136
答案 0 :(得分:0)
看起来我找到了解决方案:
data want;
set have;
format newdt E8601DT26.6;
newdt=currdt;
put currdt= newdt=;
run;
答案 1 :(得分:0)
这是我能得到的最接近的 - 从技术上讲,它们不是格式,它们会将值更改为字符串,因此这可能不符合您的要求。看起来好像图片格式指令缺少毫秒的指令,所以使用自定义格式只会让你到目前为止。
proc format;
picture test low-high = '%Y-%0m-%0d:%0H:%0M:%0S' (datatype = datetime) ;
run ;
data x;
* THIS GETS US EVERYTHING EXCEPT THE DECIMAL PLACE;
x = datetime();
put x= 22.5;
put x= datetime22.5;
put x= test.;
* TO GET THE DECIMAL THERES A BIT OF MUCKING AROUND;
* SIMPLY CONCATENATE THE DECIMAL ONWARDS TO THE FORMATTED VALUE;
length y decimal_as_string $30;
decimal_as_string = cats(put(x,22.5));
y = cats( put(x,test.),
substr(decimal_as_string, index(decimal_as_string,'.'))
);
put y=;
run;
以下是图片格式工作原理的链接:
http://www2.sas.com/proceedings/forum2007/026-2007.pdf
修改强>
实际上,使用@ user2941280的格式让我们更接近,更快。这样就可以了:
data _null;
length my_date $30;
my_date = translate(put(datetime(),E8601DT26.6),':','T');
put my_date=;
run;