SAS は初めてで、ヘルプ/ガイダンスに感謝します。
SQL Server DB に次のような日付と時刻の分割があります: a1date
a1time
a2date
a2time
。a1date
とa1time
を ONE に とa2date
とa2time
を TWO に組み合わせて、 ONE と TWO の時間差を見つけたいと思います。問題は、変数が Char データ型であり、Numeric データ型に変換する必要があることです。SAS がそれを独自の日付形式に変換し、以下のように日付と時刻の両方をマージできないため、diff を行う方法がわかりません。これまでに試した中で失敗したことを 3 つ紹介します。助けていただければ幸いです。
proc sql;
select
input(substr(strip(AcDate),1,10),MMDDYY10.)as AcDate format mmddyy10. ,
input(substr(strip(AcTime),1,10),Time10.)as AcTime format Time10. ,
input(substr(strip(ConfDate),1,10),MMDDYY10.)as ConfDate format mmddyy10. ,
input(substr(strip(ConfTime),1,10),Time10.)as ConfTime format Time10. ,
AcDate + ' ' + AcTime as Acquired,
ConfDate + ' ' + ConfTime as Confirmed,
DATEDIFF(n, Acquired, Confirmed) AS DifferenceInMinutes,
from TableName;
私も次を使用して失敗しました:(最初は「as」でエラーが発生します)
proc sql;
select
cast(AcDate + ' ' + AcTime AS datetime) AS ‘Acquired’,
cast(ConfDate + ' ' + ComfTime AS datetime) AS ‘Confirmed’,
DATEDIFF(n, Acquired, Confirmed) AS DifferenceInMinutes
FROM tablename
私はこれをいじってみましたが、それを機能させる方法がわかりません。
DATA _null_;
INFORMAT AcDate ConfDate DATE10.
AcTime ConfTime TIME10.
unit $10.;
FORMAT dt1 dt2 DATETIME.;
INPUT AcTime time1 date2 time2 unit;
dt1=DHMS(date1,0,0,time1);
dt2=DHMS(date2,0,0,time2);
difference=INTCK(unit,dt1,dt2);
PUT unit= dt1= dt2= difference=;
DATALINES;