BookmarkSubscribeRSS Feed
Hagay
SAS Employee

הסוג האחרון של משתנה זמן הוא התאריך-שעה שמאפשר לנו לשמור במשתנה אחד גם תאריך וגם שעה. בדומה למשתנים מסוג תאריך ומסוג זמן שדיברנו עליהם בשבועות הקודמים גם משתנה תאריך-שעה הוא משתנה נומרי עם format ייעודי המאפשר לנו לראות את הערכים כתאריך ושעה כלשהם.

נתחיל, כרגיל, עם הדרך הפשוטה ביותר לכתוב תאריך-שעה בצורה ישירה בקוד. מתחילים במרכאות כפולות או גרש בודד, התאריך בפורמט של יום, חודש בשלוש אותיות באנגלית והשנה ואז נקודתיים ואחריהן השעה, הדקות והשניות מופרדות זו מזו בנקודתיים. מסיימים באותן מרכאות איתן התחלנו ובאותיות DT (או dt או Dt או dT):

data _null_;
	x="25sep2020:05:42:30"dt;
	y='15sep2020:05:42'DT; * The seconds are optional;
	put x=;
	put y=;
run;

גם בתחום ה – formats אותו סיפור – מגוון רחב של format-ים מאפשרים לנו להציג את התאריך-שעה בצורה הנוחה לנו ביותר לקריאה והבנה:

data _null_;
	x="05sep2020:05:42:30"dt;
	y="05sep2020:05:42"dt;
	put x= datetime22.;
	put y= e8601dt19.; * ISO 8601 format;
run;

בדומה לתאריך ולשעה גם לתאריך-שעה יש פונקציה של SAS שמאפשרת לנו לבנות אותו מהמרכיבים שלו וגם השם של הפונקציה הזו – DHMS – עוזר לנו לזכור את הסדר הנכון של הפרמטרים: D(ay), H(our), M(inute), S(econd):

data _null_;
	x="15sep2020"d;
	y="22:45:12"t;
	z=dhms(x, 23, 54, 32);
	put z= datetime22.;
	a=dhms(x, 0, 0, y);;
	put a= datetime22.;
run;

הפונקציה DHMS מאפשרת לנו להרכיב משתנה תאריך-שעה מתאריך ושעה ואילו כדי לבצע את הפעולה ההפוכה, כלומר לחלץ את התאריך או את השעה, יש לנו זוג פונקציות לשימושנו – DATEPART לחילוץ התאריך ו – TIMEPART לחילוץ השעה:

data _null_;
	x="15sep2020:05:42:30"dt;
	y=datepart(x);
	z=timepart(x);
	put y= ddmmyy10.;
	put z= tod8.; 
run;

שתי נקודות לסיום, הראשונה, עבור הסקרנים שבינינו, המספר שמוזן במשתנה מסוג תאריך-שעה הוא מספר השניות שעברו מה – 01/01/1960 ב – 00:00 ועד לתאריך-שעה שאנחנו רוצים לייצג.

השניה היא שבדומה לפונקציה DATE שמחזירה את התאריך ברגע הרצת הקוד ולפונקציה TIME שמחזירה את השעה ברגע הרצת הקוד הפונקציה DATETIME מחזירה לנו את התאריך והשעה ברגע הרצת הקוד במשתנה אחד מסוג תאריך-שעה:

data _null_;
	x=time();
	y=date();
	z=datetime();
	put x= tod5.;
	put y= ddmmyy10.;
	put z= datetime22.;
run;

חגי

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Discussion stats
  • 0 replies
  • 718 views
  • 3 likes
  • 1 in conversation