Time 如何在SAS中格式化时间

Time 如何在SAS中格式化时间,time,sas,format,Time,Sas,Format,我有一个包含三列的数据集:开始、停止和日期 “开始”和“停止”中的观察值是时间型的 在“开始”和“停止”列中有以下两个值: 24:49:00和25:16:00 因为都有24小时以上的格式 我想将这两个值转换为以下值: 24:49:00至00:49:00 及 25:16:00至01:16:00 如何在SAS和proc sql中实现这一点 谢谢大家! 开始/停止时间-24:00:00,如下所示: data _null_; start='25:16:14't; point='24:00:0

我有一个包含三列的数据集:开始、停止和日期

“开始”和“停止”中的观察值是时间型的

在“开始”和“停止”列中有以下两个值:

24:49:00和25:16:00

因为都有24小时以上的格式

我想将这两个值转换为以下值:

24:49:00至00:49:00

25:16:00至01:16:00

如何在SAS和proc sql中实现这一点


谢谢大家!

开始/停止时间-24:00:00,如下所示:

data _null_;
   start='25:16:14't;
   point='24:00:00't;
   _start=start-point;
   put _start;
   format _start time8.;
run;

SAS时间和日期时间值使用秒作为基本单位

因此,您可以使用模运算或
TIMEPART
函数提取>24小时时间值中小于24小时的部分

data have;
  start = '24:49:00't;
  stop  = '25:16:00't;

  start_remainder = mod(start, '24:00't);   * modulus arithmetic;
  stop_remainder  = mod(stop,  '24:00't);

  start_timepart  = timepart(start);        * TIMEPART function;
  stop_timepart   = timepart(stop);

  format start: stop: time10.;
run;

计算后,不要期望开始余数小于停止余数始终为真。

是否需要转换它们?使用TIMEPART()函数

 start_day=datepart(start);
 start_time=timepart(start);
 format start_time tod8.;
或者你只是想这样显示它们

 format start stop tod8.;

汤姆知道所有的格式!谢谢汤姆的详细解释!