logo

מרווח PostgreSQL

בסעיף זה, אנו הולכים להבין את פעולתו של סוג נתונים של PostgreSQL Interval, וגם אנחנו רואים דוגמאות של ה סוג נתוני מרווחים. ובעיקר בשימוש Interval פונקציות , לדוגמה, NOW(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). ה קלט ופלט פורמט עבור ערכי מרווחי PostgreSQL.

מהו סוג נתונים מרווחי PostgreSQL?

ב-PostgreSQL, ה הַפסָקָה הוא סוג אחר של סוג נתונים המשמש לאחסון ופריסה של זמן שנים, חודשים, ימים, שעות, דקות, שניות, וכו' וה חודשים וימים ערכים הם ערכי מספרים שלמים , ואילו ה השדה של השני יכול להיות ה ערכי שברים.

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

תאריך שעה בכתב כתיבה

הערה: מספר ספרות השבר שנלקחו בשדה השני ידוע בתור דיוק p.

תחביר של סוג הנתונים PostgreSQL Interval

התחביר של סוג הנתונים PostgreSQL Interval הוא כדלקמן:

 @ interval [ fields ] [ (p) ] 

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

פָּרָמֶטֶר תיאור
שדות פרמטר השדה משמש להצגת הזמן.
ע P משמש להצגת ערך דיוק.
@ אנו יכולים להתעלם מהפרמטר @ מכיוון שהוא פרמטר אופציונלי.

הבה נראה דוגמה לדוגמה כדי להבין טוב יותר כיצד נוכל לכתוב את ערכי המרווחים עם פרמטר @ וללא פרמטר @ :

 @interval '6 months before'; @interval '2 hours 30 minutes'; 

אוֹ

 interval '6 months before'; interval '2 hours 30 minutes'; 

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

דוגמה לסוג נתונים PostgreSQL Interval

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

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

 SELECT now(), now() - INTERVAL '6 months 2 hours 30 minutes' AS '2 hours 30 minutes before last year'; 

תְפוּקָה

לאחר ביצוע הפקודה לעיל, נקבל את הפלט למטה, אשר מוצג שעתיים 30 דקות לפני שנה שעברה :

מרווח PostgreSQL

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

ראשית, נבין את ערך מרווח PostgreSQL עבור פורמט הקלט :

פורמט קלט מרווחי PostgreSQL

ב-PostgreSQL, יש לנו את הדברים הבאים תחביר מילולי, מה שעוזר לנו לכתוב את ערכי המרווחים:

 quantity unit [quantity unit...] [direction] 

יש לנו את הפרמטרים שלהלן, המשמשים בתחביר לעיל:

פָּרָמֶטֶר תיאור
כַּמוּת א כַּמוּת הוא מספר, שמקבל גם סימנים כמו + אוֹ -
יחידה ה יחידה יכול להיות כל מילניום, מאה, עשור, שנה, חודש, שבוע, יום, שעה, דקה, שנייה, אלפית שנייה, מיקרו-שנייה, או קיצור יכול להיות הבא y, m, d וכו'. וצורות הרבים יכולות להיות ה חודשים, ימים , וכו.
כיוון ה כיוון פרמטר יכול להיות לפני או המחרוזת הריקה.

הערה: התחביר לעיל משמש גם עבור פורמט הפלט מרווחים ומכונה postgres_verbose.

בדוגמה למטה, נציג כמה ערכי מרווחים שבהם אנו משתמשים ב- תחביר מילולי :

 INTERVAL '1 year 5 months 5 days'; INTERVAL '1 weeks ago'; 

פורמט המרווחים ISO 8601

מלבד התחביר המילולי למעלה, לכתוב את ערכי המרווחים בעזרת ISO 8601-זמן מרווחים, PostgreSQL מספק לנו את שתי הדרכים, שהן כדלקמן:

    פורמט מעצבים פורמט חלופי

פורמט המייצגים עבור ISO 8601 הוא כדלקמן:

 P quantity unit [ quantity unit ...] [ T [ quantity unit ...]] 

בפורמט לעיל, ערך המרווח החיוני מתחיל ב- האות פ , וה האות ת' משמש להגדרת ה יחידת השעה ביום .

הטבלה שלהלן מציגה את מרווח ISO 8601 קיצורי יחידות:

נוֹטָרִיקוֹן תיאור
ו שנים
M חודשים (לחלק התאריך)
IN שבועות
ד ימים
ח שעה (ות
M דקות (עבור חלק הזמן)
ס שניות

הערה: ה-M יכול להיות חודשים או דקות על סמך אם הוא נראה לפני או אחרי האות T.

הבה נראה דוגמה של מסמנים של ISO 8601 פורמט להבנה טובה יותר שלנו:

ה פורמט מעצבי ISO 8601 ניתן לכתוב במרווח של 5 שנים 4 חודשים 3 ימים 2 שעות 1 דקות 1 שנייה :

 P5Y4M3DT2H1M1S 

והצורה האלטרנטיבית של ISO 8601 הוא כפי שמוצג להלן:

 P [ years-months-days ] [ T hours:minutes:seconds ] 

וזה גם מתחיל ב- האות P והאות T, אשר מפצל את שעה ותאריך חלקים מערך המרווח.

לדוגמה, ה צורה חלופית של ISO 8601 ניתן לכתוב עבור 5 שנים 4 חודשים 3 ימים 2 שעות 1 דקה 1 שנייה, כפי שמוצג מטה:

 P0005-04-03T02:01:01 

פורמט פלט מרווחי PostgreSQL

ניתן להגדיר את פורמט הפלט של מרווחי PostgreSQL של ​​ערכי מרווחים בעזרת ה- מַעֲרֶכֶת סגנון אינטרוולים פקודה, כפי שאנו יכולים לראות בדוגמה הבאה:

 SET intervalstyle = 'iso_8601'; 

PostgreSQL מכיל ארבעה פורמטי פלט שונים, כגון:

    iso_8601 postgres_verbose Postgres תקן sql

הערה: כדי לעצב את ערכי המרווחים, PostgreSQL משתמש בסגנון Postgres כברירת מחדל.

הבה נראה דוגמה להבנה טובה יותר שלנו:

הפקודה שלהלן משמשת להצגת ה 5 שנים 4 חודשים 3 ימים 2 שעות 1 דקה ושנייה בארבעת פורמטי הפלט השונים:

עבור פורמט פלט ISO_8601

בפקודה למטה, נעשה זאת מַעֲרֶכֶת ה סגנון אינטרוולים כפי ש iso_8601 עבור ערך המרווח שהוזכר לעיל:

 SET intervalstyle = 'iso_8601'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minute 1 second'; 

תְפוּקָה

לאחר ביצוע הפקודה לעיל, נקבל את התוצאה למטה, המייצגת את iso_8601 פורמט פלט מרווחים:

מרווח PostgreSQL

עבור פורמט פלט postgres_verbose

בפקודה למטה, נעשה זאת מַעֲרֶכֶת ה סגנון אינטרוולים כפי ש postgres_verbose עבור ערך המרווח שהוזכר לעיל:

 SET intervalstyle = 'postgres_verbose'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 

תְפוּקָה

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

הפעלת סקריפטים בלינוקס
מרווח PostgreSQL

עבור פורמט פלט Postgres

בפקודה למטה, נעשה זאת מַעֲרֶכֶת ה סגנון אינטרוולים כפי ש Postgres עבור ערך המרווח שהוזכר לעיל:

 SET intervalstyle = 'postgres'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 

תְפוּקָה

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

מרווח PostgreSQL

עבור פורמט פלט SQL_standard

בפקודה למטה, נעשה זאת מַעֲרֶכֶת ה סגנון אינטרוולים כפי ש sql_standard עבור ערך המרווח שהוזכר לעיל:

 SET intervalstyle = 'sql_standard'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 

תְפוּקָה

נקבל את התוצאה למטה לאחר ביצוע מוצלח של הפקודה לעיל, המייצגת את sql_standard פורמט פלט מרווחים:

מרווח PostgreSQL

שינוי מרווח PostgreSQL למחרוזת

אנחנו יכולים להשתמש ב TO_CHAR() פונקציה כדי לשנות ערך מרווח למחרוזת.

התחביר לשינוי מרווח PostgreSQL למחרוזת

 TO_CHAR(interval,format) 

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

בדוגמה שלהלן, נשתמש בפונקציה TO_CHAR() הממירה את מרווח PostgreSQL לערך המחרוזת:

 SELECT TO_CHAR( INTERVAL '15h 15m 15s','HH24:MI:SS' ); 

תְפוּקָה

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

מרווח PostgreSQL

אופרטורים ופונקציות הקשורות למרווחי PostgreSQL

מפעילי מרווחים

אנו יכולים להשתמש בדברים הבאים +, -, * וכו' אופרטור אריתמטי כדי לקבל את ערכי המרווחים.

הבה נראה את הדוגמה שלהלן כדי להבין טוב יותר:

בפקודה הבאה, נשתמש ב- אופרטור אריתמטי (+) בעזרת סוג נתוני מרווחי PostgreSQL:

 SELECT INTERVAL '1h 50m' + INTERVAL '5m'; 

תְפוּקָה

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

מרווח PostgreSQL

בפקודה הבאה, נשתמש ב- אופרטור אריתמטי (-) בעזרת סוג נתוני מרווחי PostgreSQL:

 SELECT INTERVAL '3h 50m' - INTERVAL '30m'; 

תְפוּקָה

ביישום הפקודה לעיל, נקבל את התוצאה שלהלן:

מרווח PostgreSQL

בפקודה הבאה, נשתמש ב- אופרטור אריתמטי (*) בעזרת סוג נתוני מרווחי PostgreSQL:

 SELECT 400 * INTERVAL '5 minute'; 

תְפוּקָה

ביישום הפקודה לעיל, נקבל את התוצאה שלהלן:

מרווח PostgreSQL

חילוץ נתונים ממרווח PostgreSQL

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

התחביר לחילוץ נתונים ממרווח PostgreSQL

 EXTRACT(field FROM interval) 

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

ה לחלץ הפונקציה מחזירה ערך מסוג double-precision אם נרצה לחלץ מהמרווח.

בדוגמה הבאה, נשתמש ב- לחלץ() פונקציה כדי לאחזר את ערך הדיוק הכפול.

 SELECT EXTRACT (MINUTE FROM INTERVAL '2 hours 30 minutes' ); 

תְפוּקָה

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

מרווח PostgreSQL

התאמת ערכי מרווחי PostgreSQL

יש לנו שתי פונקציות, להצדיק_ימים ולהצדיק_שעות ב-PostgreSQL, המאפשר לנו לשנות את מרווח של 24 שעות לשקול כ יום אחד והמרווח של 30 יום לשקול כ חודש אחד .

הבה נראה דוגמה כדי להבין כיצד אנו מתאימים את ערכי מרווחי PostgreSQL:

בפקודה הבאה, נשתמש ב- הפונקציה justify_days ו-justify_hours:

 SELECT justify_days(INTERVAL '30 days'), justify_hours(INTERVAL '24 hours'); 

תְפוּקָה

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

מרווח PostgreSQL

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

הכנס למקלדת

בדוגמה הבאה, נשתמש בפונקציה justifiy_interval עם הפקודה SELECT:

 SELECT justify_interval(interval '6 months -1 hour'); 

תְפוּקָה

נקבל את הפלט הבא לאחר יישום הפקודה לעיל:

מרווח PostgreSQL

סקירה כללית

בתוך ה סוג נתונים של PostgreSQL Interval בסעיף, למדנו את הנושאים הבאים:

  • ה נתוני מרווחי PostgreSQL סוג משמש לאחסון ופריסה של תקופה ב שנים, חודשים, ימים, שעות, דקות, שניות.
  • השתמשנו אחרת פונקציות מרווחים , לדוגמה, NOW(), TO_CHAR(), כדי לשפר ערכי מרווחים מהטבלה המסוימת.
  • לערכי מרווחי PostgreSQL יש את שניהם קלט ופלט פורמט מרווחים.
  • אנו יכולים להתאים את ערכי מרווחי PostgreSQL בעזרת פונקציות justify_days(), justify_hours, justify_interval().
  • אנחנו יכולים להשתמש ב לחלץ() פונקציה כדי לחלץ את ערכי שדות המרווחים.