【发布时间】:2019-11-08 23:09:33
【问题描述】:
我正在尝试从表中获取当前月份的记录。由于这将是一项自动化的每月工作,因此我无法在 where 子句中给出明确的值。所以我使用 intnx 函数来获取月份的开始和结束日期。然后将它们与 where 子句中的表值(日期)进行比较。我尝试了不同的日期格式,但每次都收到相同的错误:“错误:使用等于 (=) 的表达式具有不同数据类型的组件。”
以下是我的脚本。我做错了什么?
DATA _NULL_;
CALL
SYMPUT('MonthStart',TRIM(PUT(INTNX('MONTH',TODAY(),0,'B'),ddmmyys10.)));
CALL
SYMPUT('MonthEnd',TRIM(PUT(INTNX('MONTH',TODAY(),0,'E'),ddmmyys10.)));
RUN;
%PUT &MonthStart.;
%PUT &MonthEnd.;
PROC SQL;
CREATE TABLE CURRENT_MONTH_ACTIVITY AS
SELECT * FROM MONTH_END_BASE
WHERE ACTIVITY_DATE >= '&MonthStart.' AND ACTIVITY_DATE <= '&MonthEnd.' ;
QUIT;
提前致谢!
【问题讨论】:
-
ACTIVITY_DATE 是日期变量吗?您将其视为字符串。为什么要尝试使用单引号而不是双引号?宏表达式不会在外部使用单引号创建的字符串内部进行评估。
标签: sql date sas where-clause proc