1

日付として表示したいdatetime22.3変数があります。

たとえば、17JUL2006:00:00:00.000 を 07/17/2006 として表示したい

どうすればいいですか?

ありがとう。


追加情報:

すべての返信に感謝します。

実際にproc sql内で日付形式で出力してみました。**********出力は(星)として印刷されています。何が起こっているのかわかりません。

次の方法で INTCK を使用しようとしていますが、エラーが発生します。何が間違っているのかわかりません。よろしくお願いします。ありがとう。

PROC FORMAT;
PICTURE DTFMT LOW-HIGH='%0m/%0d/%Y'  (DATATYPE=DATETIME);
RUN;

data want;
dt_val1='17JUL2006:00:00:00.000'dt;
dt_val2='17AUG2012:00:00:00.000'dt;
format dt_val1 dt_val2 dt_val3 dtfmt.;
dt_val3=intck('MONTH',dt_val1,dt_val2);
put dt_val3;
run; 
4

8 に答える 8

3
put(datepart(datetimevariable),yymmdd10.)
于 2015-02-12T05:47:58.103 に答える
2

データ ステップで同じ原則を使用する

data _null_;
   a='17JUL2006:00:00:00.000'd;
   put a;
   put 'formatted date='a MMDDYY10.;
run;

これは私のSAS 9.3からの出力です

44   data _null_;
45   a = '17JUL2006:00:00:00:000'D;
46   put a;
47   put 'formatted ' a MMDDYY10.;
48   run;

16999
formatted 07/17/2006
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
于 2013-06-19T01:00:30.613 に答える
1

SAS で日付をフォーマットするのは難しい場合があります。マクロで使用した 1 つの方法は次のとおりです。

/* get the date time */
%let start_date=%sysfunc(datetime().,10);
/* use the DATETIME informat to format the date */
%let fmt_start_date=%sysfunc(putn(&start_date, DATETIME.)); 
/* format the datetime as a date */
%put "&fmt_start_date."d;

日付をフォーマットするには、さまざまな方法があります。FORMATデータ ステップにいる場合は、ステートメントを使用することもできます。

FORMAT STARTDATE YYMMDD10.;

この場合、データ ステップの列の形式は YYYY-MM-DD となり、値を分離してそこから再構築できます。

ここに日付の SAS 入力形式に関する追加情報があります: http://support.sas.com/documentation/cdl/en/etsug/60372/HTML/default/viewer.htm#etsug_intervals_sect008.htm

そしてここ: http://support.sas.com/documentation/cdl/en/etsug/63348/HTML/default/viewer.htm#etsug_intervals_sect009.htm

さらに詳しい情報や例が必要な場合は、お知らせください。

頑張ってください!

于 2013-06-18T23:54:08.500 に答える
1

変数の内容を (基になる値を変更せずに) 日付として表示する場合は、FORMAT ステートメントを使用します。

proc print;
    format dte mmddyys10.;
run;

proc means;
    class dte;
    format dte mmddyys10.;
run;

など。 FORMAT をデータ ステップに配置することもできます。この場合、変数を使用すると自動的に取得されます。

data foo;
    format dte mmddyys10.;
run;
于 2013-06-19T01:04:55.673 に答える
0
data want;
dt_val1='17JUL2006:00:00:00.000'dt;
dt_you_want=input(substr(put(dt_val1,datetime22.3),1,9),date9.);
format dt ddmmyy10.;
run; 
于 2015-01-29T05:51:22.817 に答える
0

重複した質問からの私の答え:

元の SAS DATETIME 値 (データ型と考えてください) を DATEPART() 関数を使用して SAS DATE 値に変換し、適切な形式を適用する必要があります。

proc sql; 
 create table work.abc2
 as select *, DATEPART(a.Billing_Dt) format ddmmyy10. as Bill_date
from abc;
quit;

つまり、キースが上で指摘したように、適切なタイプの形式 (例: ddmmyy10. は SAS 日付形式) を適切な値 = 変数コンテンツ (例: (未形式)10を日付として使用する場合は 1960 年 1 月 11 日、01JAN60 として使用) に適用することが重要です。 00:00:10 を Datetime 値として使用する場合)、値が何を表しているかを確認し、必要に応じて値を変換する必要があります。

于 2014-10-14T09:26:03.410 に答える