SAS Date and Time
functions(Part 1)
A quick reference
Objective : This post is the second in the
series of posts on functions and first of two posts on Date Time functions. The
first post was on SAS character functions. This post highlights frequently used
SAS Date and time functions and provides a quick reference list and is
invaluable for revision before interviews. Also this posts aim to strengthen
the your function knowledge by providing interesting examples.
All the SAS function posts can be found here:
SAS Character function Part 1
SAS Character function Part 2
All the SAS function posts can be found here:
SAS Character function Part 1
SAS Character function Part 2
Date time functions:
DATDIF
Function:
This function outputs the number of days
between two dates, the start and end date. The calculation is done based on the
value of the third argument(basis).
Syntax :
DATDIF(Start_date, End_date,
basis)
Start_date : The period start date.
End_date : The period end date.
Basis : Basic can take the following values
:
ACT/ACT – The actual number of days are
calculated between two dates.
30/360 – Calculations are based on 30 day
month and 360 day year.
ACT/360 – Calculations are based on ACT
days in months but 360 days in a year.
ACT/365 - Calculations are based on ACT
days in months but 365 days in a year.
E.g.
data
_null_;
stdate='01jan10'd;
eddate='15jul13'd;
actual_days=datdif(stdate,
eddate, 'act/act');
days_360=datdif(stdate, eddate,
'30/360');
put actual_days= days_360=;
run;
Log: actual_days=1291 days_360=1274
YRDIF
Function:
This function outputs the number of year
elapsed between two dates, the start and end date. The calculation is done
based on the value of the third argument(basis).
Syntax :
YRDIF(Start_date, End_date, basis)
Start_date : The period start date.
End_date : The period end date.
Basis : Basic can take the following values
:
ACT/ACT – The actual number of days are
calculated between two dates.
30/360 – Calculations are based on 30 day
month and 360 day year.
ACT/360 – Calculations are based on ACT
days in months but 360 days in a year.
ACT/365 - Calculations are based on ACT
days in months but 365 days in a year.
E.g.
data _null_;
stdate='01jan1930'd;
eddate='15jul1999'd;
actual_years =YRDIF(stdate, eddate, 'act/act');
years_360
=YRDIF(stdate, eddate, '30/360' );
put actual_years= years_360=;
run;
Log: actual_years=69.534246575
years_360=69.538888889
As you would expect, the number of years
increased when we counted a 360 day Year.
DATE
Function:
This function is equivalent to TODAY()
function as it returns the current date value. This function is used for codes
which are run daily to dynamically get the current date.
Syntax:
Date()
E.g.
data
_null_;
format
x date9.;
x=DATE();
put x=;
run;
Log: x=03APR2013
TIME
Function:
This function returns the current time
value.
Syntax:
Time()
E.g.
data _null_;
format x Time8.;
x=TIME();
put x=;
run;
Log: x=16:47:52
TODAY
Function:
This function is equivalent to DATE()
function as it returns the current date value. This function does not accept
any argument. This function is used for codes which are run daily to
dynamically get the current date.
Syntax:
Today()
E.g.
data
_null_;
format x date9.;
x=today();
put x=;
run;
Log: x=03APR2013
DATEPART
Function:
This function extracts just the date and
leaves out the Time part from a SAS Datetime value.
Syntax :
DATEPART(datetime)
Datetime : Any SAS datetime value
E.g.
data
_null_;
format x datetime20.;
format y date9.;
x=datetime();
y=datepart(x);
put x=;
put y=;
run;
LOG:
x=03APR2013:23:10:23
y=03APR2013
TIMEPART Function:
This function extracts just the time and
leaves out the date part from a SAS Datetime value.
Syntax:
TIMEPART(datetime)
Datetime - Any SAS datetime value
E.g.
data _null_;
format x datetime20.;
format y date9.;
x=datetime();
y=timepart(x);
put x=;
put y=;
run;
LOG:
x=03APR2013:23:10:23
y=23:10:23
DATETIME
Function:
This function returns the current date and
time as a SAS Datetime value. It does not take any arguments.
Syntax:
DATETIME()
E.g.
data
_null_;
format x datetime20.;
x=datetime();
put x=;
run;
LOG:
x=03APR2013:23:24:11
DHMS
Function:
This function is used to create a SAS
Datetime value from a SAS date value and Hour, Min and Second values.
Syntax:
DHMS(date,hour,minute,second)
E.g.
data _null_;
x=DHMS('04APR2013'd,12,10,45);
format x datetime20.;
put x=;
run;
LOG:
x=04APR2013:12:10:45
HMS Function:
This function takes Hour,Minute and Second
numeric values as arguments and returns a SAS Time value.
Syntax:
HMS(hour,min,sec)
E.g.
data _null_;
x=HMS(12,10,45);
format x time8.;
put x=;
run;
LOG:
x=12:10:45
JULDATE
Function:
This function returns a Julian date value
taking a SAS Date value as an argument.
Note : A Julian date is notation where a year is represented as first
2 digits(If the date falls between the YEARCUTOFF option boundaries) or first 4
digits and next 3 digits as the number of days elapsed In an year.
For e.g.
10Jan1911 will be represented as 1911010 and 10Jan1935 as 35010.
Syntax:
JULDATE(date)
Date- Any SAS date value
E.g.
data _null_;
juldt1=juldate('30dec2099'd);
juldt2=juldate('30dec2011'd);;
put juldt1= juldt2=;
run;
LOG:
juldt1=2099364 juldt2=11364
JULDATE7
Function:
Same as JULDATE but always returns a 4
digit year. Recommended to use as output lengths do not vary with dates.
DATEJUL Function:
This function is the opposite of JULDATE function.
It takes a Julian date value as input and returns a SAS date value as output.
Syntax:
DATEJUL(Julian_date)
Julian_date – A Julian date value.
E.g.
data _null_;
sasdt1=datejul(2099101);
format sasdt1 date9.;
put sasdt1=;
run;
LOG:
sasdt1=11APR2099
Conclusion: I hope this post will help you to improve your knowledge on functions and
also will serve as a quick reference while preparing for interviews.
Will be back with some more SAS magic. Goodbye till
then.
Saurabh Singh Chauhan
(er.chauhansaurabh@gmail.com)
Note: Comments and suggestions are always welcome.
Disclaimer :
SAS® and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc.in the USA and other countries. ® Indicates USA registration.
Other brand and product names are registered trademarks or trademarks of their respective companies.
SAS® and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc.in the USA and other countries. ® Indicates USA registration.
Other brand and product names are registered trademarks or trademarks of their respective companies.
The contents of this post are the works of the
author(s)and do not necessarily represent the opinions,recommendations, or
practices of any organization whatsoever.
No comments:
Post a Comment