如何在SQL中将日期格式化的数字更改为数字

时间:2016-05-25 06:08:28

标签: sql sas

当SAS中的代码SQL时,我遇到了一个非常令人困惑的问题。我的代码是:

proc sql noprint;
   select VDte into :vdate 
   from test1;
quit;

proc sql;
   create table test3 as 
   select *, cdate>=&vdate. as index
   from test2;
quit;

我发现所有index = 1。应该有一些index=0和一些index=1。当我使用数字而不是宏变量vdate时,例如。 17685(02Jun2008)而不是&vdate.,它有效!

我还检查了VDte。它的类型是数字,格式是ddmmyy10 ..也就是说VDte是存储在SAS中的数字!但是当把它交给& vdate。时,有一些问题!!

有人可以帮我理解这种情况吗?

谢谢, 安德烈

1 个答案:

答案 0 :(得分:3)

如果您的VDte具有SAS日期格式,则需要"清除"在将其值存储到宏变量之前:

proc sql;
  select VDte format=8. 
    into :vdate
    from test1;
quit;

然后你的比较应该可以正常工作。

请注意,您也可以使用date9。用于创建宏变量的格式,然后在第二个查询中使用cdate>="&vdate"d