2

SAS で日付時刻を POSIX 形式にフォーマットする必要があります。以下は、「2009-11-25 14:44:56」を示しています。ミリ秒を表示するにはどうすればよいですか?

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分もかからずにこれを見つけることができません

4

2 に答える 2

3

E8601DT23.3 は、余分な「T」セパレーターを除いて、必要に応じて値を表示する必要があります。SASはそれを要求しているようです。文字値を設定している場合は、「T」を簡単に削除できます。フォーマットされた数値を使用しようとしている場合は、それに耐えなければならないと思います。

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

ISO8601 に関する 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 、および小数を含めると、期待どおりに機能するはずです。ヒントのdata nullに感謝します。

于 2013-03-21T14:25:28.753 に答える