BookmarkSubscribeRSS Feed
Hagay
SAS Employee

ב - SAS יש שלושה סוגים של משתנים המייצגים זמן – תאריך, שעה ותאריך-שעה. כפי שצוין בעבר כל שלושת הסוגים הללו הם למעשה משתנה נומרי (מספרי) אשר המספר אשר הוא מכיל מעוצב בצורה מיוחדת ע"י format כך שעבורנו בני האנוש המספר נראה כמו תאריך, שעה או תאריך-שעה.


השבוע נתחיל במשתנה תאריך, המכיל יום כלשהו בעבר או בעתיד. יש מספר דרכים להזין בקוד SAS תאריך מסוים. הדרך הפשוטה ביותר היא ע"י כתיבה של התאריך בצורה “ddMONyyyy”d כלומר מרכאות (אפשר כפולות או בודדת), היום בחודש (אפשר עם אפס מוביל ואפשר גם בלי), שם החודש באנגלית, למשל JAN עבור ינואר (אפשר באותיות גדולות או קטנות), השנה (ארבע או שתי ספרות, מומלץ ארבע, נרחיב על כך בעתיד), שוב מרכאות ואז האות d (אפשר גם D). לדוגמא:

data _null_;
	x="01jan2020"d; * Double quotation;
	y='02feb2020'D; * Single quotation;
	put x=; * Just a number;
	put y=; * Also just a number;
	z=x/y; * Make no sense but completely valid code;
	put z=;
run;

 

אפשרות אחרת להגדרת תאריך היא ע"י הפונקציה MDY אשר מקבלת שלושה פרמטרים, הראשון הוא החודש, השני הוא היום והשלישי הוא השנה - מכאן שמה – M(month)D(ay)Y(ear):

data _null_;
	x=mdy(3, 15, 2020);
	put x=;
run;

כדי שנוכל לראות את התאריך כתאריך אנחנו צריכים להצמיד format מתאים, כלומר format המיועד לעיצוב תאריכים, לשדה הנומרי שלנו שאנחנו יודעים שמכיל תאריך:

data _null_;
	x="12mar2014"d;
	y="5jan2018"d;
	format x ddmmyy10. y yymmddd10.; * For example;
	put x=;
	put y=;
run;

דרך אגב, ספירת הימים של משתנה התאריך של SAS מתחיל ב – 01/01/1960 אשר מיוצג ע"י הערך 0 כך שתאריכים הקודמים ליום זה מיוצגים ע"י מספר שלילי.

 

חגי

1 REPLY 1
Shmuel
Garnet | Level 18

יורשה להוסיף לנאמר עד כה ולהתייחס לתצוגת התאריך.

יש המשתמשים בלוכסן כתו מפריד בין חלקי התאריך (יום, חודש, שנה)

ויש הנוהגים להציב נקודה או מקף או נבקשים לקבל שדה נומרי ללא תו מפריד.

התו שיוצג בדוגמה הבאה נכון לכל סוג של format או informat המתייחס לתאריך.

 

בדוגמה שלהלן השתמשתי בפורמט בסיסי להצגת התאריך במבנה חודש-שנה עם

תווים מפרידים שונים וללא תו מפרד. 

 

data _null_;
  dt = today();
  put dt yymmn6.; * Num   ;
  put dt yymms7.; * Slash ;
  put dt yymmp7.; * Point ;
  put dt yymmc7.; * Colon ;
  put dt yymmd7.; * Dash  ;
  
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
  • 1 reply
  • 526 views
  • 1 like
  • 2 in conversation