» נושאי לימוד
» נושאי לימוד
יום שבת 27 באפריל 2024
חישוב תאריכים
דף ראשי  מתחילים  מסדי נתונים  קבלת מידע מהמסד הנתונים  חישוב תאריכים גרסה להדפסה

MySql מכיל כמה פונקציות אשר מאפשרות חישובים על תאריכים, לדוגמה חישוב גילאים.

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

 

בMySql זה יראה כך :

 

 

 

הפקודה ()YEAR נותנת את השנה של התאריך  והפקודה ()RIGHT נותנת את התווים הימניים של מחרוזת, במקרה שלנו את חמשת התווים הימניים ביותר של התאריך שהם למעשה החודש והיום של התאריך.

 

החלק של השאילתה אשר משווה את החודש והיום של התאריך הנוכחי לעומת החודש והיום של תאריך הולדתה של החיה, מחזיר 0 או 1 .

 

את התוצאה ניתן למיין בכדי להציג את החיות הצעירות ראשונות.

נשתמש ב ORDER BY .

 

לדוגמא:

 

mysql> SELECT name, birth, CURRENT_DATE,

    -> ((YEAR(CURRENT_DATE)-YEAR(birth)) 

    -> -((RIGHT(CURRENT_DATE,5)<RIGHT(birth,5))

    -> AS age  

    -> FROM pet  ORDER BY age ASC ;

 

הגילאים ימוינו בסדר עולה, שזוהי ברירת המחדל של ORDER BY ולכן ASC הוא מיותר אבל נכתב למען ההסבר.

 

למשל אם נרצה לדעת לאילו חיות יש יום הולדת בחודש הב , נצטרך לבודד את החודש מתאריך הולדתם. נשתמש ב ()MONTH לעשות זאת.

 

כדי לראות כיצד ()MONTH עובדת נריץ את השאילתה הפשוטה הבאה:

 

mysql> SELECT name,birth,MONTH(birth)FROM pet;

 

 

התוצאה תראה כך:

 

(MONTH(birth birth name
2 1993-02-04 Fluffy
3 1994-03-17 Claws
5 1989-05-13 Buffy
8 1990-08-27 Fang
8 1989-08-31 Bowser
9 1998-09-11 Chirpy
12 1997-12-09 Whistler
4 1996-04-29 Slim
3 1999-03-30 Puffball

 

אם נרצה למצוא את החיות שנולדו באפריל, נשתמש בשאילתה הבאה:

 

mysql> SELECT name,birth FROM pet WHERE MONTH(birth)=5;

 

 

עכשיו נחזור לבעיה המקורית והיא מציאת החיות שימיי ההולדת שלהן הוא בחודש הבא.

קודם אנו צריכים לחשב את החודש הבא:

לשם כך נשתמש בפונקציה ()NOW  שמחזירה את התאריך הנוכחי. נפעיל עליה את הפונקציה  ()MONTH  ולתוצאה נוסיף 1 .

אבל ישנה בעיה קטנה. אם החודש הנוכחי הוא דצמבר אז לאחר הפעלת רצף הפונקציות שתיארתי, נקבל 13 שזהו מספר חודש לא חוקי.

כדי לפתור בעיה זאת נשתמש בפונקציה MOD אשר מחזירה את שארית החילוק של שני מספרים כתוצאה.

 

והשאילתה הסופית תראה כך:

 

mysql> SELECT name, birth FROM pet

    -> WHERE MONTH(birth)=MOD(MONTH(NOW()),12)+1;

  

MONTH תחזיר מספר בין 0 ל 12 .

MOD יחזיר לנו מספר בין 0 ל 11 ,לו נוסיף 1  וכך נקבל את החודש הבא.

 

 02-04-04 / 13:40  עודכן ,  01-11-03 / 16:01  נוצר ע"י אלי אלוני  בתאריך 
 מיון על מספר עמודות - הקודםהבא - הצגת שמות הימים והחודשים של תאריכים 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 3