2017-03-29 15 views
1

SASコードで日付の減算を行う必要がありますが、INTCK関数が動作するとは思えません。時間:分。私はこれをプログラムすることができますが、私はおそらく、私がタスクを達成するために気づいていないフォーマットまたは機能があると推測しています。intck関数が切り捨てるときのSASの日付の減算

日付1 = 01JAN2000 12時00

日付2 = 14:30 02JAN2000

差= 1時02分30秒(すなわち1日、2時間、30分)

:例えば

この場合、INTCKを使用した場合、ユニットを数日または数時間で保管する必要がありますが、上記のフォーマットを取得できません。

+1

日時の値の間の差は数秒で差を表します。カスタムTIME形式を求めているようです。 – Tom

+0

はい、それはおそらく正しいと思います。私はSASドキュメントで時間と時間を分けた時刻形式を見つけることができませんでした。この形式はありますか? – Bosley

答えて

3

%nディレクティブをPICTURE形式で使用できるはずです。

proc format; 
picture pictdhmf 
    low-high='%0n:%0H:%0M'(datatype=time) 
; 
run; 

メモTIMEのデータ型を使用する必要があります。 警告:DBCSサポートを使用してSASを実行する場合(Shift-JISエンコーディングなどを使用して)、適切な結果が得られません。または0より小さい時間。 UTF-8エンコーディングの場合でも、シングルバイト文字セットを使用する場合は、負でない値に対しても機能します。

代わりに、関数を作成することができます。

proc fcmp outlib=work.func.func; 
function dhmf(c) $; 
    length f $ 10; 
    f=catx(':',datepart(abs(c)),put(timepart(abs(c)),tod5.)); 
    if c < 0 then f='-'||f ; 
    return (f); 
endsub; 
run; 
options cmplib=work.func; 

この関数を呼び出すフォーマットを作成します。

proc format; 
value dhmf(default=10) 
other=[dhmf()]; 
run; 

したがって、両方のメソッドをテストして、TIMEフォーマットが生成する値と比較するとします。

data _null_; 
    input (date1 date2) (:datetime24.) ; 
    diff = date2 - date1 ; 
    if _n_=1 then put 'RAW' @11 'TIME.' @20 'Function' @ 30 'Picture'; 
    put diff comma9. @11 diff time. @20 diff dhmf. @30 diff pictdhmf.-l ; 
cards ; 
01JAN2000:02:30 02JAN2000:03:45 
01JAN1960:08:00 01JAN1960:17:00 
01FEB2017:00:00 04FEB2017:06:23 
01FEB2015:00:00 04FEB2017:06:23 
04FEB2017:00:00 01FEB2017:06:23 
run; 

我々が得る:

RAW  TIME. Function Picture 
    90,900 25:15:00 1:01:15 1:01:15  
    32,400 9:00:00 0:09:00 0:09:00  
    282,180 78:23:00 3:06:23 3:06:23  
    63440580 17622:23 734:06:23 734:06:23 
    -236,220 -65:37 -2:17:37 -2:06:23 
+0

Ooh、 '%n'は' datatype = time'です - これはどこに文書化されていますか? – Joe

+0

ドキュメンテーションチームに連絡して、ドキュメントを修正することができるかどうかを確認しました。これは私が認識しているものではなく、どこにも書かれていないようだからです。 – Joe

+0

ありがとう!私は決して絵のフォーマットについて聞いたことがなかったので、私は確かに何か新しいことを学んだ。一つの質問。答えのあなたの例では、最後の行は関数と画像形式の結果の差が11時間あり、理由を理解できません。説明できますか? – Bosley

関連する問題