BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
Rhostert
Fluorite | Level 6

Bom dia a todos.

Se puderem me auxiliar ficarei grato

Tenha uma Base no SAS chamada Coordenadores e preciso fazer um filtro na Coluna Mes_Referencia

Estou tentando utilizar das duas formas abaixo, mas continua trazendo a base completa e não apenas os casos de Nov/22 para cá.

 

%let DtInicial= "01/11/2022";

 

PROC SQL;
CREATE TABLE WORK.Coordenadores_01 AS
SELECT *
FROM WORK.Coordenadores;
Where Mes_Referencia_Teste >= &DtInicial;
Format "&DtInicial"d yymmdd10.;
RUN;

 

Tentei também dessa forma:

 

%let DtInicial= "01/11/2022";

 

Data Coordenadores_01;
set Work.Coordenadores;
if Mes_Referencia_Teste>= &DtInicial;
Run;

 

Muito Obrigado.

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

VIA http://google.com/translate:

 

Os literais DATE devem ser strings que o informat DATE possa entender.

 

%let DtInicial= "01NOV2022"d;

PROC SQL;
CREATE TABLE WORK.Coordenadores_01 AS
  SELECT *
  FROM WORK.Coordenadores
  where Mes_Referencia_Teste >= &DtInicial
;
QUIT;

data Coordenadores_01;
  set Work.Coordenadores;
  if Mes_Referencia_Teste >= &DtInicial;
run;

Ou use o número real de dias.

%let DtInicial= %sysfunc(mdy(11,1,2022));

 

View solution in original post

3 REPLIES 3
Wanderico_Icatu
Fluorite | Level 6

Boa tarde.

 

Você deve usar a data no padrão SAS, desta forma:

%let DtInicial= '01nov2022'd;

 

Lembrando que os meses devem estar em inglês (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov e dec).

Tom
Super User Tom
Super User

VIA http://google.com/translate:

 

Os literais DATE devem ser strings que o informat DATE possa entender.

 

%let DtInicial= "01NOV2022"d;

PROC SQL;
CREATE TABLE WORK.Coordenadores_01 AS
  SELECT *
  FROM WORK.Coordenadores
  where Mes_Referencia_Teste >= &DtInicial
;
QUIT;

data Coordenadores_01;
  set Work.Coordenadores;
  if Mes_Referencia_Teste >= &DtInicial;
run;

Ou use o número real de dias.

%let DtInicial= %sysfunc(mdy(11,1,2022));

 

OliveiraMiguelZ
Obsidian | Level 7
Complementando que ele poderia utilizar o método mencionado, mas apenas realizar a transformação antes de aplicar ao filtro no PROC SQL.

Exemplo, adicionar:

%Let DtInicial = %SysFunc(InputN(&DtInicial., DDMMYY10.));