Tuesday, August 3, 2010

SAS date in a pass-through query

Dates have to be passed into Teradata as quoted strings and you can't just concatenate single quotes to the macro variable using the native RDBMS syntax. What you need is the %BQUOTE function to mask a quote as you assign it to a macro variable. Here is an example where you want the last 5 days of data.

data _null_;
call symput( 'ystrdt', put(date() - 5, yymmdd10.) );
run;

%let q=%BQUOTE(');

PROC SQL;
CONNECT TO TERADATA (connection information);
EXEC(COMMIT) BY TERADATA;

EXEC
(
INSERT INTO db_name.test_table
SELECT ...some_list...
FROM db_name.some_table
WHERE some_date > &q&ystrdt&q
) BY TERADATA;
EXEC(COMMIT) BY TERADATA;

DISCONNECT FROM TERADATA;
QUIT;

No comments:

Post a Comment