BookmarkSubscribeRSS Feed
Hagay
SAS Employee

אחרי שהצגנו בשבוע שעבר את התאריך ב - SAS השבוע נדבר על השעה. בדומה למשתנה מסוג תאריך ישנן שתי דרכים להזין זמן למשתנה ב – SAS. הראשונה היא ע"י כתיבה של הזמן בצורה של “hh:mm:ss”t כלומר מרכאות (כפולות או בודדת), השעות, נקודתיים, הדקות, נקודתיים, השניות ולבסוף מרכאות (אם התחלנו עם כפולות אז כפולות ואם התחלנו עם בודדת אז בודדת) והאות t (אפשר גם T). אם רוצים אפשר להשמיט את השניות לגמרי:

data _null_;
	x="15:45:54"t;
	y='0:45'T;
	z="23:59:59"t;
	put x=;
	put y=;
	put z=;
run;

האפשרות השניה היא ע"י הפונקציה HMS המקבלת שלושה פרמטרים כאשר הראשון הוא שעה, השני הוא הדקות והשלישי הוא השניות. כמו הפונקציה MDY משבוע שעבר גם השם של הפונקציה HMS עוזר לנו לזכור את הסדר הנכון של הפרמטרים:

data _null_;
	x=hms(15,45,54); 
	y=hms(10,23,0); * We must give the HMS three parameters. If the seconds are not relevant than we can use 0;
	put x=;
	put y=;
run;

בניגוד לתאריך ש -  SAS מתעקשת לקבל פרמטרים בטווחים הרלוונטים (1 עד 12 עבור החודש ו – 1 עד 31 עבור היום בחודש, תלוי בחודש ובשנה) עבור זמן SAS הרבה יותר זורמת ומאפשרת לנו להזין כל מספר כלשהו עבור השניות, דקות והשעות. כאשר מזינים מספרים מעל 60 עבור השניות והדקות SAS אוטומטית ממירה אותם ליחידות הבאות בתור:

data _null_;
	x="100:100:100"t;
	y=hms(200,200,200);
	put x=;
	put y=;
run;

גם עבור זמן יש ל – SAS מגון רחב של format-ים שמאפשרים לנו להציג את הערך בצורה נוחה להבנה אבל למרות שנראה שחלק מהם זהים בדיוק אחד לשני יש ביניהם מספר הבדלים דקים. למשל הפורמט HHMM יציג גם שעות מעל 24 אבל הפורמט TOD (time of day) תמיד יציג את החלק מהזמן הרלוונטי ליממה אחת:

data _null_;
	x="15:45:54"t;
	y='0:45'T;
	z="100:100:100"t;
	put x= hhmm.;
	put y= tod5.;
	put z= hhmm10.;
	put z= tod.;
	put z= hour10.2;
run;

שכחתי בשבוע שעבר להזכיר את הנושא אבל אם אנחנו רוצים לקבל את התאריך ברגע הרצת הקוד יש לנו את הפונקציה DATE שיש לה גם שם חיבה – TODAY. לקבלת הזמן ברגע הרצת הקוד יש לנו את הפונקציה TIME:

data _null_;
	x=date();
	y=today(); * Just like date();
	z=time();
	put x= ddmmyy10.;
	put y= ddmmyy10.;
	put z= tod.;
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
  • 414 views
  • 2 likes
  • 1 in conversation