我对 SAS 相当陌生,最近我们将一些 SAS 数据集迁移到 SQL Server 表,但我们仍在使用 SAS 进行分析。当 SAS 尝试从 SQL Server 表中引入数据并让 SAS 检查 srv_edt 日期是否在 dos_beg_dt1 和 dos_end_dt1 的 SAS 日期之间时,我遇到了问题。
当 SAS 尝试比较日期时,我收到以下错误:错误:WHERE 子句运算符需要兼容的变量。
dos_beg_dt1、dos_end_dt1 和 srv_edt(SQL 日期格式)都以 yyyy-mm-dd 格式“出现”。当我将 srv_edt 带入 SAS 表时,它会将其读取为字符日期。因此,我尝试更改日期的格式,然后我会收到如下错误:错误:变量 srv_edt 已被定义为字符和数字。我似乎找不到正确的格式或函数来让 SAS 进行比较以查看 srv_edt (SQL) 是否介于 dos_beg_dt1 和 dos_end_dt1 SAS 日期之间。
我使用的代码如下:
libname sql odbc dsn=test schema=dbo;
%let dos_beg_dt1 = %sysfunc(intnx(qtr,&date,-1,beginning),yymmdd10.);
%let dos_end_dt1 = %sysfunc(intnx(qtr,&date,-1,end),yymmdd10.);
data sample;
set sql.table;
where &dos_beg_dt1 <= srv_edt <= &dos_end_dt1;
run;
作为参考,我使用 SAS 9.2 通过 odbc 连接到 SQL Server 2008。
任何帮助或建议将不胜感激。