DATA Step, Macro, Functions and more

Simple Macro to Use Today() in Where Function

Accepted Solution Solved
Reply
New Contributor
Posts: 2
Accepted Solution

Simple Macro to Use Today() in Where Function

[ Edited ]

Hello,

 

My over-research for something that I believe should be simple has caused me to be terribly confused on how to use today() function in a where statement. 

 

A column in my data is in the date format DATETIME22.3. I simply want to create subset that excludes any observations with a date greater than today.

 

All I want is to be able to reference today as a macro &today. as DATETIME22.3.

 

Thanks,

Autumn

 

/*this gives me 0 observations because today() appears to be a different format than activity_date_update*/

data latest_activity1;
set latest_activity;
if activity_date_update > today() then delete;
run;

/*this macros I found on my research appear to be used on for character macros*/

data _null_;
   call symputx('dt',put(date(),yymmddn8.);
run;

data latest_activity1;
set latest_activity;
if activity_date_update > &dt. then delete;
run;

Accepted Solutions
Solution
‎03-22-2018 10:19 AM
Super Contributor
Posts: 340

Re: Simple Marco to Use Today() in Where Function

[ Edited ]

Hello,

 

SInce your column is in datetime format you can not compare it directly to a date.

Use the datepart function to extract the date from datetime.

 

where datepart(activity_date_update)>today();

View solution in original post


All Replies
Solution
‎03-22-2018 10:19 AM
Super Contributor
Posts: 340

Re: Simple Marco to Use Today() in Where Function

[ Edited ]

Hello,

 

SInce your column is in datetime format you can not compare it directly to a date.

Use the datepart function to extract the date from datetime.

 

where datepart(activity_date_update)>today();

New Contributor
Posts: 2

Re: Simple Marco to Use Today() in Where Function

Thank you very much, my google searches let me down a very different path. 

Super User
Posts: 13,498

Re: Simple Marco to Use Today() in Where Function

Pet peeve mixing up date and datetime values.


@akovach wrote:

 

A column in my data is in the date format DATETIME22.3. I simply want to create subset that excludes any observations with a date greater than today.

 

 


In SAS dates and datetimes are measured in different units: date uses days and datetime uses seconds. Proper use of the values involved will help in the long term.

☑ This topic is solved.

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

Discussion stats
  • 3 replies
  • 117 views
  • 1 like
  • 3 in conversation