我有一个宏值%let date = '31DEC2015'd;
(以sas格式表格中的1451550706498)
如何将其转换为SAS格式以在我的桌子上应用过滤器,我该怎么办?谢谢!
答案 0 :(得分:3)
无需转换。如果你的sas数据集中有一个日期列,你可以通过这种方式使用你的宏变量来过滤它:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>Demo</display-name>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>context</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/context-servlet.xml</param-value>
</context-param>
<listener>
<listener-class> org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
</web-app>
虽然你提到的数字不能合理地提及你提到的日期 - 31DEC2015在SAS中的数值为data filtered;
set unfiltered;
where dateCol <= &date;
run;
(自1960年1月1日以来经过的天数)。所以你的数据有些奇怪......即使有一个日期时间(自1960年1月1日以来经过的秒数),这个数字大约为20,453
,远不及你的数值。你是怎么得到这么大的数字的?
不是100%肯定我完全明白你在问什么,但这里是你在评论中提到的解决方案的替代方案,这将给你一个“真正的”SAS日期,即仍然是数字,但是您可以应用任何SAS日期格式:
1,767,139,200 secs.
结果:
data test;
format newDate date9.;
oldDateTime = 1451550706498;
oldDate = datepart(oldDateTime/1000);
newDate = intnx("YEAR",oldDate,-10,"SAME");
put _ALL_;
run;
(我看到你的结果与你的结果存在1天的差异。)
如果您需要根据此值进行过滤(通过宏变量),您始终可以使用CALL SYMPUT进行分配。