Help using Base SAS procedures

if statement

Accepted Solution Solved
Reply
Super Contributor
Posts: 1,040
Accepted Solution

if statement

HI Team,

i was trying to use an if condition like the following and I get a syntax error.

could you please help me correct this?????

DAta want want2;

set have;

If datepart(time) between "begin" and "end " then output want;

if datepart(time) between "begin2 " and "end2" theN output want2;

run;

THanks


Accepted Solutions
Solution
‎08-04-2013 11:52 PM
Super User
Super User
Posts: 6,495

Re: if statement

Two problems

1)  The IF statement does not support that SQL specific BETWEEN operator even though the WHERE statement does.

Use the normal SAS syntax :

  "&begin"d <= datepart(time) <= "&end"d

Or the expanded syntax :

  "&begin"d <= datepart(time) and datepart(time) <= "&end"d


2) You cannot compare a numeric (dates are numbers of days since 1/1/1960) with a character string. If you format the values in DATE format then you can use date literals.

%let begin=01JAN2013;

%let end=31MAR2013;

%let begin2=01APR2013;

%let end2=30JUN2013;

data want want2;

  set have;

  if "&begin"d <= datepart(time) <= "&end"d then output want;

  if "&begin2"d <= datepart(time) <= "&end2"d then output want2;

run;

View solution in original post


All Replies
Solution
‎08-04-2013 11:52 PM
Super User
Super User
Posts: 6,495

Re: if statement

Two problems

1)  The IF statement does not support that SQL specific BETWEEN operator even though the WHERE statement does.

Use the normal SAS syntax :

  "&begin"d <= datepart(time) <= "&end"d

Or the expanded syntax :

  "&begin"d <= datepart(time) and datepart(time) <= "&end"d


2) You cannot compare a numeric (dates are numbers of days since 1/1/1960) with a character string. If you format the values in DATE format then you can use date literals.

%let begin=01JAN2013;

%let end=31MAR2013;

%let begin2=01APR2013;

%let end2=30JUN2013;

data want want2;

  set have;

  if "&begin"d <= datepart(time) <= "&end"d then output want;

  if "&begin2"d <= datepart(time) <= "&end2"d then output want2;

run;

Super Contributor
Posts: 1,040

Re: if statement

Thank you very much Tom. That was very helpful.

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 188 views
  • 0 likes
  • 2 in conversation