Menu
CoddyTech

עבודה עם תאריכים חלק 3

חלק מהיחידה יסודות במסלול ה-SQL של Coddy. שיעור 33 מתוך 72.

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

  1. DATE() - ממירה מחרוזת לתאריך
  2. STRFTIME() - מעצבת תאריכים בהתאם לפרמטרים שצוינו
  3. DATE('now') - מקבלת את התאריך הנוכחי:

לדוגמה, המרה של מחרוזת לתאריך:

SELECT DATE('2023-05-15 13:45:00')
-- מחזיר: 2023-05-15

SELECT DATE('now')
-- מחזיר את התאריך הנוכחי

לדוגמה, חילוץ השנה, החודש והיום מתוך תאריך:

-- קבלת השנה
SELECT STRFTIME('%Y', '2023-05-15')
-- מחזיר: 2023

-- קבלת החודש
SELECT STRFTIME('%m', '2023-05-15')
-- מחזיר: 05

-- קבלת היום
SELECT STRFTIME('%d', '2023-05-15')
-- מחזיר: 15

-- הצגת שילוב של השנה והיום (אפשר להשתמש בכל מפריד)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- מחזיר: 2023:15

-- שימוש במקף כמפריד במקום זאת
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- מחזיר: 15-05-2023

-- קבלת היום בשבוע
SELECT STRFTIME('%w', '2023-05-15')
-- מחזיר: 1 (יום שני; יום ראשון הוא 0)

מצייני פורמט נפוצים:

  • %Y: שנה (4 ספרות)
  • %m: חודש (01-12)
  • %d: יום בחודש (01-31)
  • %w: יום בשבוע (0-6, יום ראשון הוא 0)
  • %H: שעה (00-23)
  • %M: דקה (00-59)
  • %S: שנייה (00-59)

אפשר להשתמש בכל תו מפריד בין מציינים (למשל, -, :, /). לדוגמה, STRFTIME('%d-%m-%Y', date) וגם STRFTIME('%d:%m:%Y', date) משלבים את היום, החודש והשנה, ורק התווים המפרידים שונים.

אפשר לשלב את הפונקציות האלה בשאילתות:

-- מצא את כל הרשומות מהשנה הנוכחית
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')
challenge icon

אתגר

קל

טבלאות ועמודות זמינות:

  • events: id, start, end

כתבו שאילתה שמציגה:

  • את מזהה האירוע
  • את תאריך ההתחלה בפורמט "DD-MM-YYYY". קראו לעמודה הזו formatted_start
  • את תאריך הסיום בפורמט "DD-MM-YYYY". קראו לעמודה הזו formatted_end
  • את משך הזמן בימים בין ההתחלה לסיום, מעוגל למספר השלם הקרוב ביותר. קראו לעמודה הזו duration_days

סננו רק את השורות שבהן השנה של העמודה start היא 2009 (STRFTIME() מחזירה מחרוזת ולא מספר).

מיינו את התוצאות לפי משך הזמן בימים בסדר יורד.

תזכורת: כדי לחשב את ההפרש בין תאריכים, השתמשו ב-JULIANDAY(end) - JULIANDAY(start) והשתמשו ב-ROUND() כדי לעגל למספרים שלמים.

נסו בעצמכם

quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: SQL אונליין