כיצד לעבוד ביעילות עם תאריכים וזמנים ב- MySQL

כיצד לעבוד ביעילות עם תאריכים וזמנים ב- MySQL

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





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





למד את הפונקציות השונות של MySQL הזמינות לטיפול וניהול תאריכים / שעות בתוך מסד הנתונים שלך.





עבודה עם אזורי זמן

כדי לעזור לדברים להיות סטנדרטיים, עליך לעבוד רק עם תאריכים / שעות באזור זמן UTC. בכל פעם שאתה יוצר חיבור למסד הנתונים MySQL, עליך להחליף את אזור הזמן ל- UTC, דבר שניתן לעשות עם משפט SQL הבא:

SET TIME_ZONE = '+0:00'

מכיוון שכל התאריכים יישמרו כעת ב- UTC, אתה תמיד יודע עם מה אתה עובד, מה שהופך את הדברים לפשוטים יותר ופשוטים יותר.



אפליקציית לוח השנה החינמית הטובה ביותר לאנדרואיד

בעת הצורך אתה יכול בקלות להמיר את אזור הזמן מכל ערך חותם זמן / זמן עם ה- handy CONVERT_TZ () פונקציית MySQL. עליך לדעת את הקיזוז תחילה, לדוגמה, PST בחוף המערבי של צפון אמריקה הוא UTC -08: 00, כך שתוכל להשתמש ב:

SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');

זו התוצאה 2021-02-04 13:47:23 שזה בדיוק נכון. שלוש הטענות עברו CONVERT_TZ () הם קודם כל חותמת הזמן / הזמן שאתה מתחיל איתה (השתמש כעת () לזמן הנוכחי), השני תמיד יהיה '+0: 00' מכיוון שכל התאריכים נאלצים ל- UTC במסד הנתונים, והאחרון הוא הקיזוז שאליו ברצוננו להמיר את התאריך.





הוסף / הפחת תאריכים

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

למרבה המזל ל- MySQL יש את המעולה DATE_ADD () ו DATE_SUB () פונקציות שהופכות את המשימה לקלה ביותר. לדוגמה, תוכל להפחית שבועיים מהתאריך הנוכחי באמצעות משפט SQL:





SELECT DATE_SUB(now(), interval 2 week);

אם במקום זאת היית רוצה להוסיף שלושה ימים לחותמת זמן קיימת, היית משתמש ב:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

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

לדוגמא אחרת, אם ברצונך לאחזר את כל הכניסות שהתרחשו ב -34 הדקות האחרונות תוכל להשתמש במשפט SQL כגון:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

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

קבל הבדל בין תאריכים

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

SELECT DATEDIFF(now(), '2020-12-15');

ה DATEDIFF פונקציה לוקחת שני ארגומנטים, שניהם חותמות תאריך / שעה ונותנת את מספר הימים ביניהם. הדוגמה לעיל תציג את מספר הימים שחלפו מה -15 בדצמבר 2020 ועד היום.

כדי לקבל את מספר השניות בין שני תאריכים, TO_SECONDS () הפונקציה יכולה להועיל, למשל:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

זה יביא למספר השניות בין שני התאריכים שסופקו.

חלץ פלחים מתאריכים

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

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

הצהרות SQL לעיל יגרמו לכך 02 , השעה הנוכחית ו 196 מכיוון שה -15 בספטמבר הוא היום ה -196 בשנה. להלן רשימה של כל פונקציות חילוץ התאריכים הזמינות, כאשר כל אחת לוקחת רק ארגומנט אחד, והתאריך מופק מתוך:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

לדוגמה, אם אולי רק רצית לאחזר את החודש והשנה שבהם נוצרו כל המשתמשים, תוכל להשתמש במשפט SQL כגון:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

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

קיבוץ רשומות לפי תקופת תאריך

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

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

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

שימו לב, לביצועי אינדקס טובים יותר, תמיד עדיף להימנע משימוש בפונקציות תאריך כגון שָׁנָה() בתוך סעיף WHERE של הצהרות SQL, ובמקום זאת השתמש ב בֵּין אופרטור כפי שמוצג בדוגמה למעלה.

לעולם אל תתבלבל עם תאריכים שוב

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

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

אם אתה קצת חדש ב- SQL, הקפד לבדוק את אלה פקודות SQL חיוניות כדי לסייע בשיפור השימוש שלך ב- SQL.

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל כיצד ליצור דוחות ומסמכים מקצועיים ב- Microsoft Word

מדריך זה בוחן את מרכיבי הדו'ח המקצועי וסוקר את המבנה, העיצוב והגמר של המסמך שלך ב- Microsoft Word.

קרא הבא
נושאים קשורים על הסופר מאט דיזאק(פורסמו 18 מאמרים) עוד מאת מאט דיזאק

הירשם לניוזלטר שלנו

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

לחצו כאן להרשמה