mysql / sas 或 proc sql 中的分钟间隔

发布于 2024-09-30 21:02:54 字数 146 浏览 6 评论 0原文

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

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

Does any one know proc sql or data step have a function where I can convert datetime value into : 15 mins interval for example :

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

明月松间行 2024-10-07 21:02:54

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

使用 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”中应用该格式。

嗯。

Sounds like you want to apply a format to the minute component of a datetime value.

Using SAS, you could try something like:

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;

This is just quick and dirty, you can adapt it to your requirements. The principle is that we are just creating a display format to show a value with a certain format applied to it. I've separately created the variable 'b', which is just the minute component of the datetime, then in variable 'c' I'm applying the format.

hth.

浅唱々樱花落 2024-10-07 21:02:54

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

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

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

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

One way is to convert the date to a unix timestamp. A unix timestamp is the number of seconds since January 1st, 1970. Then you can take the modulo of 15*60 to give the number of seconds past the last 15 minute mark.

For example, using the current time now():

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

This prints 20:00 for me (it's 20:08 here.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文