logo

الفاصل الزمني لـ PostgreSQL

في هذا القسم، سوف نفهم عمل نوع البيانات الفاصلة لـ PostgreSQL، ونحن نرى أيضا أمثلة التابع نوع البيانات الفاصلة. وتستخدم في الغالب الفاصل الزمني المهام ، على سبيل المثال، NOW()، TO_CHAR()، EXTRACT()، justify_days()، justify_hours()، justify_interval(). ال الإدخال والإخراج تنسيق لقيم الفاصل الزمني لـ PostgreSQL.

ما هو نوع البيانات الفاصلة لـ PostgreSQL؟

في PostgreSQL، فاصلة هو نوع آخر من أنواع البيانات المستخدمة لتخزين ونشر الوقت سنوات، شهور، أيام، ساعات، دقائق، ثواني، الخ و أشهر وأيام القيم هي قيم الأعداد الصحيحة ، في حين أن مجال الثاني يمكن أن يكون قيم الكسور.

تتضمن قيمة نوع بيانات الفاصل الزمني لـ PostgreSQL تخزين 16 بايت الحجم مما يساعد على تخزين فترة بالنطاق المقبول من - 178000000 سنة إلى 178000000 سنة سنين.

نهاية جافا للحلقة

ملاحظة: يُعرف عدد أرقام الكسر المأخوذة في الحقل الثاني بالدقة p.

بناء جملة نوع بيانات الفاصل الزمني لـ PostgreSQL

بناء جملة نوع بيانات 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

دعونا نرى أمثلة عينة واحدة لفهم كيفية نوع بيانات الفاصل الزمني لـ PostgreSQL يعمل.

في المثال أدناه، سنحاول العثور على الوقت قبل ساعتين و 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] 

لدينا المعلمات أدناه، والتي يتم استخدامها في بناء الجملة أعلاه:

معامل وصف
كمية أ كمية هو رقم يقبل أيضًا علامات مثل + أو -
وحدة ال وحدة يمكن أن يكون أي الألفية، القرن، العقد، السنة، الشهر، الأسبوع، اليوم، الساعة، الدقيقة، الثانية، المللي ثانية، ميكروثانية، أو يمكن أن يكون الاختصار على النحو التالي ص، م، د، الخ. وصيغ الجمع يمكن أن تكون أشهر، أيام ، إلخ.
اتجاه ال اتجاه يمكن أن تكون المعلمة قبل أو السلسلة الفارغة.

ملحوظة: يتم استخدام بناء الجملة أعلاه أيضًا لتنسيق إخراج الفاصل الزمني ويعرف باسم 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 أشهرًا أو دقائق بناءً على ما إذا كان يظهر قبل الحرف T أو بعده.

دعونا نرى مثالا على ذلك تسميات ISO 8601 تنسيق لفهمنا بشكل أفضل:

ال تنسيق تسميات ISO 8601 يمكن كتابتها للفاصل الزمني 5 سنوات 4 أشهر 3 أيام 2 ساعة 1 دقيقة 1 ثانية :

 P5Y4M3DT2H1M1S 

والشكل البديل ل ايزو 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 لقيم الفاصل الزمني بمساعدة ملف تعيين com.interferencestyle الأمر، كما نرى في المثال التالي:

 SET intervalstyle = 'iso_8601'; 

يحتوي PostgreSQL على أربعة تنسيقات مختلفة للمخرجات، مثل:

    iso_8601 postgres_verbose بوستجرس معيار SQL

ملاحظة: لتنسيق قيم الفاصل الزمني، يستخدم PostgreSQL نمط Postgres افتراضيًا.

دعونا نرى مثالاً لفهمنا الأفضل:

يتم استخدام الأمر أدناه لعرض 5 سنوات 4 أشهر 3 أيام 2 ساعة 1 دقيقة 1 ثانية في تنسيقات الإخراج الأربعة المختلفة:

لتنسيق الإخراج ISO_8601

في الأمر أدناه، سنقوم بذلك تعيين ال com.interferencestyle مثل 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

في الأمر أدناه، سنقوم بذلك تعيين ال com.interferencestyle مثل postgres_verbose لقيمة الفاصل الزمني المذكورة أعلاه:

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

انتاج |

سوف نحصل على النتيجة أدناه بعد تنفيذ الأمر أعلاه، والذي يوضح postgres_verbose تنسيق إخراج الفاصل الزمني:

بيثون رقمية
الفاصل الزمني لـ PostgreSQL

لتنسيق إخراج Postgres

في الأمر أدناه، سنقوم بذلك تعيين ال com.interferencestyle مثل بوستجرس لقيمة الفاصل الزمني المذكورة أعلاه:

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

انتاج |

سوف نحصل على النتيجة أدناه بعد تنفيذ الأمر أعلاه بنجاح، والتي تظهر بوستجرس تنسيق إخراج الفاصل الزمني:

الفاصل الزمني لـ PostgreSQL

لتنسيق الإخراج Sql_standard

في الأمر أدناه، سنقوم بذلك تعيين ال com.interferencestyle مثل 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) 

في بناء الجملة أعلاه، يمكننا استخدام السنة، الشهر، التاريخ، الساعة، الدقائق الخ في المعلمة الميدانية.

ال يستخرج ترجع الدالة قيمة من النوع مزدوج الدقة إذا أردنا الاستخراج من الفاصل الزمني.

في المثال التالي سوف نستخدم يستخرج() وظيفة لاسترداد قيمة الدقة المزدوجة.

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

انتاج |

بعد تنفيذ الأمر أعلاه بنجاح، سوف نحصل على الإخراج أدناه، الذي يعرض جزء التاريخ للدقة المزدوجة القيم كما هو موضح أدناه:

الفاصل الزمني لـ PostgreSQL

ضبط قيم الفاصل الزمني لـ PostgreSQL

لدينا وظيفتين، justify_days وjustify_hours في PostgreSQL، والذي يسمح لنا بتعديل ملف الفاصل الزمني 24 ساعة اعتبرها يوم واحد والفاصل الزمني 30 يوم اعتبرها شهر واحد .

دعونا نرى مثالاً لفهم كيفية ضبط قيم الفاصل الزمني لـ PostgreSQL:

في الأمر التالي، سوف نستخدم دالة justify_days وjustify_hours:

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

انتاج |

بعد تنفيذ الأمر أعلاه، سنحصل على النتيجة التالية، والتي تعرض الفاصل الزمني 30 يومًا كشهر واحد و ال الفاصل الزمني 24 ساعة هو يوم واحد :

الفاصل الزمني لـ PostgreSQL

بالإضافة إلى ذلك، justify_interval تنظم الوظيفة القيم الفاصلة بمساعدة justify_days وjustify_hours مع تعديلات الإشارة المضافة:

في المثال التالي، سوف نستخدم الدالة justifiy_interval مع الأمر SELECT:

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

انتاج |

سنحصل على الإخراج التالي بعد تنفيذ الأمر أعلاه:

تجاوز طريقة جافا
الفاصل الزمني لـ PostgreSQL

ملخص

في ال نوع بيانات الفاصل الزمني لـ PostgreSQL القسم، تعلمنا المواضيع التالية:

  • ال بيانات الفاصل الزمني لـ PostgreSQL يتم استخدام النوع لتخزين ونشر فترة في سنوات، أشهر، أيام، ساعات، دقائق، ثواني.
  • استخدمنا مختلفة وظائف الفاصل ، على سبيل المثال، الآن ()، TO_CHAR ()، لتعزيز قيم الفاصل الزمني من جدول معين.
  • تحتوي قيم الفاصل الزمني لـ PostgreSQL على كليهما الإدخال والإخراج تنسيق الفاصل الزمني.
  • يمكننا ضبط قيم الفاصل الزمني لـ PostgreSQL بمساعدة وظائف justify_days ()، justify_hours، justify_interval ().
  • يمكننا استخدام يستخرج() وظيفة لاستخراج قيم المجال الفاصل.