2014-08-28 66 views

回答

0

看起來像我發現了一個解決方案:

data want; 
set have; 
    format newdt E8601DT26.6; 
    newdt=currdt; 
    put currdt= newdt=; 
run; 
0

這裏是我可以得到的最接近 - 技術上他們不是格式,他們正在改變val如果這樣做可能不符合您的要求。看起來好像圖片格式指令缺少毫秒的指令,所以使用自定義格式只會讓你感到滿意。

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;