我有一个sql代码,无法理解其含义
proc sql; create table tito as
select distinct j.perjobs_pidm,
, to_date(to_char(t.pertito_time_entry_date,'YYYYMMDD') ||t.pertito_time_in,'YYYYMMDDHH24MI') tmi
from stg.pertito t
, stg.perjobs j
where t.pertito_jobs_seqno = j.perjobs_seqno
;quit;
我不理解的部分是to_date部分。如何将其更改为SAS语言。这段代码是什么意思?谢谢!
答案 0 :(得分:1)
这是输入的SQL等价物(put(var,DATE9。)||':' || put(var2,TIME8。),DATETIME。),一种结合日期和时间的方法进入日期时间。优越的SAS方法将是
dtvar = dhms(datevar,0,0,timevar);
使用日期'天'和#秒;'秒在DHMS(天数分钟秒)功能。
这是有效的,因为时间变量是自午夜以来的秒数;所以DHMS(date,0,0,time)创建一个datetime变量。 IE,如果是早上8点,你可以这样做:
dhms(date,8,0,0) -> 8:00am on date
或
dhms(date,0,0,480) -> 8:00am on date
因为480 = 60 * 8。
答案 1 :(得分:-1)
该代码有两列 pertito_time_entry_date 和 pertito_time_in ,然后格式化然后在代码中连接它们:
to_char(t.pertito_time_entry_date,'YYYYMMDD') ||t.pertito_time_in
然后将整个块包装在to_date()中,将整个表达式格式化为YYYYMMDDHH24MI。然后将其存储为SAS可以在 tito.tmi 列中理解的日期值。