טיפול תאריך ושעה נתונים ב-MySQL חיוניים לפעולות רבות של מסד נתונים, במיוחד כשמדובר בטיפול בחותמות זמן לתזמון משימות או יצירת מבוסס זמן. MySQL מספקת מגוון פונקציות תאריך ושעה המסייעות למשתמשים לעבוד עם ערכי תאריך לבצע חישובים ולעצב אותם לפי הצורך.
פונקציות אלו מאפשרות למפתחים לבצע חישובים לחלץ חלקים ספציפיים של תאריך או אפילו לעצב את הפלט לקריאה טובה יותר. במאמר זה נחקור את פונקציות התאריך הנפוצות ביותר של MySQL מסבירות את התחביר שלהן מספקות דוגמאות ונדריך אותך כיצד להשתמש בהן ביעילות
הבנת סוגי הנתונים של MySQL תאריך ושעה
כשעובדים עם תאריכים ב-MySQL זה יכול להיות מסובך למתחילים במיוחד בגלל שהפורמט של התאריך במסד הנתונים חייב להתאים לפורמט של נתוני הקלט במהלך ההכנסה. במקרים רבים במקום להשתמש רק בתאריך פשוט, ייתכן שנצטרך לשמור גם תאריך וגם שעה בהתאם למקרה השימוש. זה המקום שבו ה DATETIME ו TIMESTAMP סוגי נתונים נכנסים לתמונה.
MySQL מספקת את סוגי הנתונים הבאים לאחסון ערכי תאריך ושעה:
1. תאריך :
- פוּרמָט :
YYYY-MM-DD - משמש לאחסון רק התאריך (שנה חודש ויום) ללא כל רכיב זמן.
2. DATETIME :
- פוּרמָט :
YYYY-MM-DD HH:MM:SS - מאחסן גם את התאריך וגם את השעה מה שהופך אותו לשימושי כאשר אתה צריך ללכוד זמנים ספציפיים יחד עם התאריך.
3. חותמת זמן :
- פוּרמָט :
YYYY-MM-DD HH:MM:SS - דומה ל
DATETIMEאֲבָלTIMESTAMPכולל גם תמיכה באזור זמן. זה מתעדכן אוטומטית לחותמת הזמן הנוכחית כאשר רשומה משתנה מה שהופך אותו לאידיאלי למעקב אחר שינויים ברשומות לאורך זמן.
4. שָׁנָה :
- פוּרמָט :
YYYYאוֹYY - משמש לאחסון רק את השנה שיכול להיות שימושי עבור יישומים שבהם יש צורך רק בשנה כגון מעקב אחר שנות לידה או שנות כספים.
פונקציות תאריך ושעה של MySQL
עכשיו בואו נצלול לתוך פונקציות התאריך של MySQL שבהן תוכלו להשתמש כדי לתפעל ולשאול נתוני תאריך ושעה ביעילות.
1. NOW()- קבל תאריך ושעה נוכחיים
ה עַכשָׁיו() הפונקציה מאחזרת את התאריך והשעה הנוכחיים ב YYYY-MM-DD HH:MI:SS פוּרמָט.
שְׁאֵלָה:
SELECT NOW();
תְפוּקָה:

2. CURDATE() - קבל תאריך נוכחי בלבד
אם אנחנו צריכים רק את התאריך הנוכחי ללא חלק הזמן נוכל להשתמש בו CURDATE() מה שמחזיר את התאריך ב YYYY-MM-DD פוּרמָט.
שְׁאֵלָה:
SELECT CURDATE();
תְפוּקָה:

3. CURTIME() - קבל זמן נוכחי בלבד
הפונקציה CURTIME() מחזירה את הזמן הנוכחי ב HH:MI:SS פורמט ללא התאריך.
גיל מיה חליפה
שְׁאֵלָה:
SELECT CURTIME();
תְפוּקָה:

4. DATE() - חלץ את חלק התאריך מערך DATETIME
הDATE()הפונקציה מחלצת רק את חלק התאריך מ-aDATETIMEאוֹTIMESTAMPערך לזרוק את הזמן.
דוּגמָה: לשולחן שנקרא users :
| תְעוּדַת זֶהוּת | שֵׁם | שעת לידה |
|---|---|---|
| 4120 | לְתַרְגֵל | 26-09-1996 16:44:15.581 |
שְׁאֵלָה:
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
תְפוּקָה:
הבמאית קארן ג'והר
| שֵׁם | תאריך לידה |
|---|---|
| לְתַרְגֵל | 26-09-1996 |
5. EXTRACT() - חלץ חלקי תאריך ספציפיים
EXTRACT()משמש לחילוץ חלקים ספציפיים של תאריך כגון יום חודש או שנה. פונקציה זו יכולה להיות מועילה במיוחד בעת ניתוח או השוואה של חלקים שונים של תאריך. ניתן לשקול מספר יחידות אך רק חלקן משמשות כגון מיקרו-שנייה דקה שנייה שעה יום שבוע חודש רבעון שנה וכו'. ו'תאריך' הוא ביטוי תאריך חוקי.
תַחבִּיר:
EXTRACT(unit FROM date);
שאילתה לחילוץ יום:
SELECT Name Extract(DAY FROM
BirthTime) AS BirthDay FROM Test;
תְפוּקָה:
| שֵׁם | יוֹם הוּלֶדֶת |
|---|---|
| לְתַרְגֵל | 26 |
שאילתה לחילוץ שנה:
SELECT Name Extract(YEAR FROM BirthTime)
AS BirthYear FROM Test;
תְפוּקָה:
| שֵׁם | שנת לידה |
|---|---|
| לְתַרְגֵל | 1996 |
שאילתה לחילוץ שניות:
SELECT Name Extract(SECOND FROM
BirthTime) AS BirthSecond FROM Test;
תְפוּקָה:
| שֵׁם | BirthSecond |
|---|---|
| לְתַרְגֵל | 581 |
6. DATE_ADD() - הוסף מרווחים לתאריך
ה DATE_ADD() הפונקציה מאפשרת לך להוסיף מרווחי זמן (למשל ימים חודשים שנים) לתאריך אוDATETIMEעֵרֶך.
תַחבִּיר:
DATE_ADD(סוג תאריך INTERVAL expr);
דוּגמָה: עבור הטבלה שלהלן בשם ' מִבְחָן '
| תְעוּדַת זֶהוּת | שֵׁם | שעת לידה |
|---|---|---|
| 4120 | לְתַרְגֵל | 26-09-1996 16:44:15.581 |
שאילתה ל הוסף שנה אחת לתאריך
SELECT Name DATE_ADD(BirthTime INTERVAL
1 YEAR) AS BirthTimeModified FROM Test;
תְפוּקָה:
| שֵׁם | זמן לידה שונה |
|---|---|
| לְתַרְגֵל | 26-09-1997 16:44:15.581 |
שאילתה להוספת 30 יום לתאריך
SELECT Name DATE_ADD(BirthTime
INTERVAL 30 DAY) AS BirthDayModified FROM Test;
תְפוּקָה:
| שֵׁם | יום הולדת שונה |
|---|---|
| לְתַרְגֵל | 26-10-1996 16:44:15.581 |
שאילתה להוספת 4 שעות לתאריך
SELECT Name DATE_ADD(BirthTime INTERVAL
4 HOUR) AS BirthHourModified FROM Test;
תְפוּקָה:
| שֵׁם | BirthSecond |
|---|---|
| לְתַרְגֵל | 26-10-1996 20:44:15.581 |
7. DATEDIFF() - מצא את ההבדל בין שני תאריכים
פונקציה זו מחזירה את מספר הימים בין שני תאריכים.
תַחבִּיר:
DATEDIFF(intervaldate1 date2);
מרווח - דקה/שעה/חודש/שנה וכו'
date1 & date2- ביטוי תאריך/שעה
שאילתה ל מצא את ההבדל בין שני תאריכים
SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;
תְפוּקָה:
| DateDiff |
|---|
8. DATE_FORMAT() - פורמט תאריך ושעה
DATE_FORMAT() מאפשר לנו לעצב את א תַאֲרִיך DATETIME אוֹ חותמת זמן ערך לפורמט מותאם אישית באמצעות מצייני מיקום.
תַחבִּיר:
DATE_FORMAT(dateformat);
התאריך הוא תאריך חוקי והפורמט מציין את פורמט הפלט עבור התאריך/שעה. הפורמטים שבהם ניתן להשתמש הם:
- %a-שם יום חול מקוצר (א'-שבת)
- %b-שם חודש מקוצר (ינואר-דצמבר)
- %c-חודש מספרי (0-12)
- %D-יום בחודש עם סיומת אנגלית (0th 1st 2nd 3rd)
- %d-יום בחודש מספרי (00-31)
- מספרי %e-Day של החודש (0-31)
- %f-Microseconds (000000-999999)
- %H-שעה (00-23)
- %h-שעה (01-12)
- %I-Hour (01-12)
- מספרי %i-דקות (00-59)
- %j-יום בשנה (001-366)
- %k-שעה (0-23)
- %l-שעה (1-12)
- שם %M-חודש (ינואר-דצמבר)
- מספרי %m-חודש (00-12)
- %p-AM או PM
- %r-Time 12-hour (hh:mm: ss ואחריו AM או PM)
- %S-שניות (00-59)
- %s-שניות (00-59)
- %T-Time 24 שעות (שעות:ממ: ss)
- %U-Week (00-53) שבו יום ראשון הוא היום הראשון בשבוע
- %u-Week (00-53) שבו יום שני הוא היום הראשון בשבוע
- %V-Week (01-53) שבו יום ראשון הוא היום הראשון בשבוע בשימוש עם %X
- %v-Week (01-53) שבו יום שני הוא היום הראשון בשבוע בשימוש עם %x
- %W-שם יום השבוע (ראשון-שבת)
- %w-יום בשבוע (0=יום ראשון 6=שבת)
- %X-Year לשבוע שבו יום ראשון הוא היום הראשון בשבוע ארבע ספרות בשימוש עם %V
- %x-Year לשבוע שבו יום שני הוא היום הראשון בשבוע ארבע ספרות בשימוש עם %v
- %Y-Year מספרי ארבע ספרות
- %y-Year מספרי שתי ספרות
שאילתה לעיצוב תאריך
SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;תְפוּקָה:
קו תחתון בסימון
| Formatted_date |
|---|
| יום חמישי 10 באפריל 2025 |
שיטות עבודה מומלצות לעבודה עם תאריך ושעה ב-MySQL
1. השתמש תמיד בתבניות תאריך נכונות
בעת הכנסת או עדכון תאריכים, הקפד לעקוב אחר הפורמטים הצפויים של MySQL (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). זה מבטיח שהשאילתות שלך מחזירות תוצאות צפויות ללא שגיאות.
2. שיקולי אזור זמן עם TIMESTAMP
בְּעוֹדDATETIMEאינו מאחסן מידע על אזור זמןTIMESTAMPעושה. אם היישום שלך רגיש לאזור זמן (למשל ביישומים בינלאומיים), שקול להשתמשTIMESTAMPעבור שדות תאריך-שעה שצריכים לקחת בחשבון אזורי זמן שונים.
3. טיפול בטווחי תאריכים בשאילתות
לסינון נתונים המבוססים על טווחי תאריכים (למשל, אחזור כל הרשומות מחודש או שנה ספציפיים), הקפידו להשתמש בהשוואות תאריכים מתאימות ב-WHEREסָעִיף. דוּגמָה:
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
4. שיקולי ביצועים
כאשר עובדים עם פונקציות תאריך ושעה, במיוחד במערך נתונים גדולים, שימו לב להשפעה על הביצועים. הימנע משימוש בפונקציות כמוNOW()אוֹCURDATE()ב-WHEREסעיף מכיוון שהם יכולים להאט שאילתות בעת התמודדות עם טבלאות גדולות.
מַסְקָנָה
פונקציות התאריך והשעה של MySQL הם כלים חיוניים עבור טיפול ו מניפולציות נתונים זמניים בתוך מסדי הנתונים שלך. על ידי שליטה בפונקציות כמוNOW() CURDATE() DATE_ADD() DATEDIFF()וDATE_FORMAT()אתה יכול לעבוד איתו בקלות חישובים מבוססי זמן השוואות ו פורמטים . המפתח לשימוש יעיל בפונקציות הללו הוא להבין את התחביר שלהן מתי וכיצד להשתמש בהן ואת השלכות הביצועים שלהן במערך נתונים גדולים. עם הידע הזה תוכל לבנות שאילתות מדויקות וניתנות להרחבה יעילות יותר עבור כל הצרכים שלך הקשורים לתאריך ולשעה ב-MySQL.