Desktop productivity for business analysts and programmers

using datetime prompts in Case statement

Reply
SAS Employee
Posts: 2

using datetime prompts in Case statement


hello after creating a new computed column based on the advice of the earlier discussion

case  when ( t1.date <=  "start_date_90"d then 1  else 0 end

I get a invalid date/time/datetime constat "start_date_90"d.

when i use the prompt in a filter statement the code reflects no error.

what is happening.  am I missing something?

Super User
Posts: 19,194

Re: using datetime prompts in Case statement

What is start_date_90? A variable or prompt?

If it's a prompt in date time format use it as &start_date_90 - no quotes and no d.

If it's a variable use start_date_90 - no quotes, no d.

Quotes and D are for when you're hard coding a date comparison.

Super User
Super User
Posts: 6,851

Re: using datetime prompts in Case statement

If the prompt has become a macro variable then use & before the name to resolve the name to the value.

   &START_DATE_90

If it contains a datetime value in text format ( 21JUL2015:13:02 for example) then you can wrap it in quotes and append DT to let SAS know that you want it treated as a datetime literal.

  "&START_DATE_90"DT

If it contains the number of seconds since 01JAN1960 then do not wrap it in quotes as it will be a number.

If you are comparing the value to variables that contain dates then you might need to convert it from datetime to date.

DATEPART("&START_DATE_90"DT)

SAS Employee
Posts: 2

Re: using datetime prompts in Case statement

thanks Tom and Reeza,

apologies... I did use the "&promptvar"dt   the datetime variable is a sas datetime.  so I was hoping the " " and dt would do the trick.. Is this case sensitive?

Ok I tried all the suggestions. I think that using DT instead of D was the game changer.

"&start_date_90"DT  <+ t1.datvar

thanks a lot! it is running !

Ask a Question
Discussion stats
  • 3 replies
  • 507 views
  • 2 likes
  • 3 in conversation