בסעיף זה, אנו הולכים להבין את פעולתו של סוג נתונים של 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, יש לנו את הדברים הבאים תחביר מילולי, מה שעוזר לנו לכתוב את ערכי המרווחים:
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 מכיל ארבעה פורמטי פלט שונים, כגון:
הערה: כדי לעצב את ערכי המרווחים, 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 פורמט פלט מרווחים:
עבור פורמט פלט postgres_verbose
בפקודה למטה, נעשה זאת מַעֲרֶכֶת ה סגנון אינטרוולים כפי ש postgres_verbose עבור ערך המרווח שהוזכר לעיל:
SET intervalstyle = 'postgres_verbose'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
תְפוּקָה
נקבל את התוצאה שלהלן לאחר יישום הפקודה לעיל, המציגה את postgres_verbose פורמט פלט מרווחים:
הפעלת סקריפטים בלינוקס
עבור פורמט פלט Postgres
בפקודה למטה, נעשה זאת מַעֲרֶכֶת ה סגנון אינטרוולים כפי ש Postgres עבור ערך המרווח שהוזכר לעיל:
SET intervalstyle = 'postgres'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
תְפוּקָה
נקבל את התוצאה שלהלן לאחר ביצוע מוצלח של הפקודה לעיל, המציגה את Postgres פורמט פלט מרווחים:
עבור פורמט פלט 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 למחרוזת
אנחנו יכולים להשתמש ב TO_CHAR() פונקציה כדי לשנות ערך מרווח למחרוזת.
התחביר לשינוי מרווח PostgreSQL למחרוזת
TO_CHAR(interval,format)
ה פונקציית TO_CHAR() לוקח את אמירה ראשונה כפי ש ערך מרווח ועוד אחד כמו ה פוּרמָט ומחזיר מחרוזת, מציג את המרווח בפורמט המסוים.
בדוגמה שלהלן, נשתמש בפונקציה TO_CHAR() הממירה את מרווח PostgreSQL לערך המחרוזת:
SELECT TO_CHAR( INTERVAL '15h 15m 15s','HH24:MI:SS' );
תְפוּקָה
לאחר ביצוע מוצלח של הפקודה לעיל, נקבל את התוצאה שלהלן:
אופרטורים ופונקציות הקשורות למרווחי PostgreSQL
מפעילי מרווחים
אנו יכולים להשתמש בדברים הבאים +, -, * וכו' אופרטור אריתמטי כדי לקבל את ערכי המרווחים.
הבה נראה את הדוגמה שלהלן כדי להבין טוב יותר:
בפקודה הבאה, נשתמש ב- אופרטור אריתמטי (+) בעזרת סוג נתוני מרווחי PostgreSQL:
SELECT INTERVAL '1h 50m' + INTERVAL '5m';
תְפוּקָה
נקבל את התוצאה שלהלן על יישום הפקודה לעיל, כפי שמוצג להלן:
בפקודה הבאה, נשתמש ב- אופרטור אריתמטי (-) בעזרת סוג נתוני מרווחי PostgreSQL:
SELECT INTERVAL '3h 50m' - INTERVAL '30m';
תְפוּקָה
ביישום הפקודה לעיל, נקבל את התוצאה שלהלן:
בפקודה הבאה, נשתמש ב- אופרטור אריתמטי (*) בעזרת סוג נתוני מרווחי PostgreSQL:
SELECT 400 * INTERVAL '5 minute';
תְפוּקָה
ביישום הפקודה לעיל, נקבל את התוצאה שלהלן:
חילוץ נתונים ממרווח PostgreSQL
אנחנו יכולים להשתמש ב לחלץ() פונקציה לחלץ את השדות מערך מרווח, לדוגמה, שנה, חודש, תאריך וכו' .
התחביר לחילוץ נתונים ממרווח PostgreSQL
EXTRACT(field FROM interval)
בתחביר לעיל, אנו יכולים להשתמש ב- שנה, חודש, תאריך, שעה, דקות , וכו', בפרמטר השדה.
ה לחלץ הפונקציה מחזירה ערך מסוג double-precision אם נרצה לחלץ מהמרווח.
בדוגמה הבאה, נשתמש ב- לחלץ() פונקציה כדי לאחזר את ערך הדיוק הכפול.
SELECT EXTRACT (MINUTE FROM INTERVAL '2 hours 30 minutes' );
תְפוּקָה
לאחר ביצוע מוצלח של הפקודה לעיל, נקבל את הפלט למטה, המציג את ה חלק תאריך עבור הדיוק הכפול ערכים כפי שמוצג להלן:
התאמת ערכי מרווחי PostgreSQL
יש לנו שתי פונקציות, להצדיק_ימים ולהצדיק_שעות ב-PostgreSQL, המאפשר לנו לשנות את מרווח של 24 שעות לשקול כ יום אחד והמרווח של 30 יום לשקול כ חודש אחד .
הבה נראה דוגמה כדי להבין כיצד אנו מתאימים את ערכי מרווחי PostgreSQL:
בפקודה הבאה, נשתמש ב- הפונקציה justify_days ו-justify_hours:
SELECT justify_days(INTERVAL '30 days'), justify_hours(INTERVAL '24 hours');
תְפוּקָה
לאחר ביצוע הפקודה לעיל, נקבל את התוצאה הבאה, המציגה את המרווח של 30 יום כחודש אחד וה מרווח של 24 שעות כמו יום אחד :
חוץ מזה, ה להצדיק_מרווח הפונקציה מסדירה את ערכי המרווחים בעזרת להצדיק_ימים ולהצדיק_שעות עם שינויי סימן נוספים:
הכנס למקלדת
בדוגמה הבאה, נשתמש בפונקציה justifiy_interval עם הפקודה SELECT:
SELECT justify_interval(interval '6 months -1 hour');
תְפוּקָה
נקבל את הפלט הבא לאחר יישום הפקודה לעיל:
סקירה כללית
בתוך ה סוג נתונים של PostgreSQL Interval בסעיף, למדנו את הנושאים הבאים:
- ה נתוני מרווחי PostgreSQL סוג משמש לאחסון ופריסה של תקופה ב שנים, חודשים, ימים, שעות, דקות, שניות.
- השתמשנו אחרת פונקציות מרווחים , לדוגמה, NOW(), TO_CHAR(), כדי לשפר ערכי מרווחים מהטבלה המסוימת.
- לערכי מרווחי PostgreSQL יש את שניהם קלט ופלט פורמט מרווחים.
- אנו יכולים להתאים את ערכי מרווחי PostgreSQL בעזרת פונקציות justify_days(), justify_hours, justify_interval().
- אנחנו יכולים להשתמש ב לחלץ() פונקציה כדי לחלץ את ערכי שדות המרווחים.