2

有谁知道 proc sql 或数据步骤有一个功能,我可以将日期时间值转换为:15 分钟间隔,例如:

03NOV2010:00:00:02 --> 0-15
03NOV2010:00:16:02 --> 15-30 
4

2 回答 2

1

一种方法是将日期转换为 unix 时间戳。unix 时间戳是自 1970 年 1 月 1 日以来的秒数。然后您可以取模 15*60 来给出过去 15 分钟标记之后的秒数。

例如,使用当前时间now()

select now() - interval unix_timestamp(now())%(15*60) second

这是为我打印20:00的(这里是 20:08。)

于 2010-11-03T23:08:50.550 回答
1

听起来您想将格式应用于日期时间值的分钟部分。

使用 SAS,您可以尝试以下操作:

proc format;
  value min15int
    00-15 = "00-15"
    15<-30= "16-30"
    30<-45= "31-45"
    45<-60= "46-60";
run;

data test;
  a='03NOV2010:00:00:02'dt;output;
  a='03NOV2010:00:16:02'dt;output;
run;

data test2;
  set test;
    b=minute(a);
    c=b;
    format c min15int.;
run;

这既快又脏,您可以根据自己的要求进行调整。原理是我们只是创建一个显示格式来显示一个应用了某种格式的值。我已经单独创建了变量“b”,它只是日期时间的分钟部分,然后在变量“c”中应用格式。

hth。

于 2010-11-03T23:11:18.950 回答