![ישן](https://static.fresh.co.il/images/vBulletin/statusicon/post_old.gif)
10-01-2007, 05:48
|
|
|
חבר מתאריך: 21.09.02
הודעות: 408
|
|
קוד:
SELECT (YEAR(CURDATE())-YEAR(birthdate)) - (RIGHT(CURDATE(),5)<RIGHT(birthdate,5)) AS age FROM ...
הסבר: birthdate - שדה מסוג DATE (צורת הנתונים היא '0000-00-00').
דרך ראשון אתה מוציא את השנה מתאריך הלידה ומהתאריך העכשוי (ע"י שימוש בפונקציה YEAR) ומחסר ביינהם. לאחר מכן את מוציא את החלק השני של התאריך, היום והחודש, ע"י שימוש בפונקציה RIGHT (מקביל ל substr ב PHP, חוץ מההבדל שלהוציא מצד ימין יש את RIGHT ומצד שמאל את LEFT) ושליפת 5 תווים מצד ימין. גם פה אתה שולף של התאריך העכשוי ושל תאריך הלידה ואז אתה בודק האם בתוצאה שבאה מתאריך הלידה גדולה יותר מזאת שבאה מהתאריך העכשוי, ומחסר את התשובה ממספר השנים שחלפו, החישוב הקודם שלנו. במידה והתנאי מתקיין הוא יחזיר 1 ויורד אותו ממספר השנים שחלפו, מכיוון שעוד לא הגענו לתאריך (ולמשתמש עדיין לא הייתה יום הולדת השנה).
דיי פשוט, אפשר לבצע את זה גם דרך PHP, אפילו בצורה יותר נוחה, אבל זאת החלטה שלך. בכל מקרה, פשוט תעשה חיפוש פעם הבאה, ואל תתעצל לקרוא מניואלים או לחשוב קצת בעצמך מחוץ לקופסא. הכל מופיע במניואל של MySQL, וגם ב PHP אפשר למצוא בדיוק מה שאתה מחפש..
|