SAS date

Reply
Regular Contributor
Posts: 222

SAS date

Hi, i have a table with loads of dates.

I need a way to look this table everytime i run six months ago.

I use this Where my_date >= '14jul/2015:00:00:00'dt - 180;

But it does not work.

Tks,

Rodrigo Dartibali Elias

Super User
Posts: 23,771

Re: SAS date

Posted in reply to DartibaliRodrigo

datetime are in seconds, so 6 'months' ago is 30*24*60*60 seconds, except you have months that vary in length.

I recommend using intck or intnx functions.

Super User
Super User
Posts: 9,599

Re: SAS date

Posted in reply to DartibaliRodrigo

It does work, what you are doing is subtracting 180 miliseconds from 14Jul2015 and then any date which is >= to that output.  You need to understand how dates, times, and datetime variables are stored internally - read up in the manual on this.  As for your problem, I would recommend using intck:

where my_date >= intck('month',datepart('14jul2015:00:00:00'dt),-6)

What this is doing is first, taking the datepart of the datetime variable as we are not interested in time part.  Then it is using intck to move, as a monthly interval 6 months back, and finally using this date value as a comparison.

Regular Contributor
Posts: 222

Re: SAS date

Posted in reply to DartibaliRodrigo

Wow, this helps a lot, guys.

Thank you

Super User
Posts: 13,583

Re: SAS date

Posted in reply to DartibaliRodrigo

And go back and tell however named a DATETIME variable as a DATE to cut it out. :smileymischief:

Ask a Question
Discussion stats
  • 4 replies
  • 209 views
  • 2 likes
  • 4 in conversation