انتقل إلى محتوى الدرس
الدرس 10
دورة MySQL

أنواع بيانات التاريخ والوقت والطابع الزمني في MySQLMySQL Date and Time Data Types

تعلّم أنواع بيانات التاريخ والوقت والطابع الزمني في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

عندما يحتاج التطبيق إلى حفظ تاريخ تقويمي دون جزء الوقت مثل تاريخ الميلاد أو تاريخ إصدار الفاتورة أو انتهاء الاشتراك، توفّر MySQL النوع DATE بحجم 3 بايت فقط وبالصيغة القياسية YYYY-MM-DD ضمن النطاق الممتد من 1000-01-01 إلى 9999-12-31. أما لحفظ السنة المكونة من أربعة أرقام بين 1901 و2155، فيشغل النوع YEAR بايتاً واحداً فقط.

مخطط أنواع بيانات التاريخ والوقت والطابع الزمني في MySQL 8
SQL
-- Parse and extract components from standard ISO DATE values
SELECT
  CAST('2026-11-07' AS DATE) AS release_date,
  YEAR('2026-11-07') AS release_year,
  MONTH('2026-11-07') AS release_month,
  DAYOFMONTH('2026-11-07') AS release_day;

يمثّل النوع TIME (بحجم أساسي 3 بايت) كلاً من وقت اليوم المعتاد (مثل 14:30:00) وكذلك المدة الزمنية المنقضية أو الفارق بين حدثين. ولأنه مصمم لتمثيل المدد الزمنية أيضاً، يمتد نطاقه الصالح من -838:59:59 إلى 838:59:59، أي ما يتجاوز 34 يوماً كاملة.

SQL
-- Calculate elapsed TIME durations and time-of-day offsets
SELECT
  CAST('14:45:30' AS TIME) AS shift_start,
  TIMEDIFF('18:15:00', '09:30:00') AS shift_duration,
  TIME_TO_SEC('02:30:00') AS duration_in_seconds;

يحفظ كل من DATETIME وTIMESTAMP التاريخ والوقت معاً بالصيغة YYYY-MM-DD HH:MM:SS، لكنهما يختلفان جذرياً في الحجم وسلوك المنطقة الزمنية. يشغل DATETIME مساحة 5 بايت ويمتد من عام 1000 حتى 9999 دون أي تحويل للمنطقة الزمنية. أما TIMESTAMP فيشغل 4 بايت ويمتد من بداية عصر يونيكس 1970 حتى 2038-01-19 بتوقيت UTC، ويحوّل الوقت تلقائياً من المنطقة الزمنية للجلسة إلى توقيت UTC عند الحفظ ويعيده لتوقيت الجلسة عند القراءة.

SQL
-- Compare UTC timestamp evaluation vs calendar DATETIME
SELECT
  UTC_TIMESTAMP() AS current_utc_time,
  CAST('2026-11-07 15:00:00' AS DATETIME) AS literal_datetime,
  UNIX_TIMESTAMP('2026-11-07 15:00:00') AS epoch_seconds;

تحدث المعاملات المالية عالية التردد وسجلات التتبع الموزعة عدة مرات خلال الثانية الواحدة. تدعم MySQL 8 تحديد دقة أجزاء الثانية عبر المعامل fsp من 0 إلى 6 في الأنواع TIME(fsp) وDATETIME(fsp) وTIMESTAMP(fsp)، مما يتيح توثيق الوقت بدقة تصل إلى الميكروثانية (6 خانات عشرية بعد الثانية).

SQL
-- Inspect current timestamp with millisecond and microsecond fsp
SELECT
  NOW(3) AS now_milliseconds,
  UTC_TIMESTAMP(6) AS utc_microseconds,
  MICROSECOND('2026-11-07 12:30:00.987654') AS micro_part;

تحفظ التطبيقات الموجهة لعدة دول أوقات الأحداث بالتوقيت العالمي المنسق UTC مع عرضها بالتوقيت المحلي لكل مستخدم. يمكنك فحص القيم الزمنية وتحويلها بين الفروق الزمنية المختلفة عبر الدالة CONVERT_TZ(dt, from_tz, to_tz) ومتغيرات المنطقة الزمنية للجلسة @@session.time_zone.

SQL
-- Convert a UTC datetime across regional timezone offsets
SELECT
  @@session.time_zone AS session_tz,
  CONVERT_TZ('2026-11-07 09:00:00', '+00:00', '+03:00') AS ksa_dt,
  CONVERT_TZ('2026-11-07 09:00:00', '+00:00', '+02:00') AS eg_dt;
النوع الزمنيالحجم الأساسي (+fsp)النطاق الزمني الصالحالتحويل لمنطقة UTCحالة الاستخدام الهندسي المثلى
DATE3 بايتمن 1000-01-01 إلى 9999-12-31لاتواريخ الميلاد، الإجازات، وتواريخ الاستحقاق
TIME(fsp)3 بايت (+0..3 بايت)من -838:59:59 إلى 838:59:59لامواعيد الدوام اليومية والمدد الزمنية المنقضية
DATETIME(fsp)5 بايت (+0..3 بايت)من 1000-01-01 إلى 9999-12-31 23:59:59لا (قيمة تقويمية ثابتة)المواعيد التقويمية والعقود الممتدة لما بعد 2038
TIMESTAMP(fsp)4 بايت (+0..3 بايت)من 1970-01-01 إلى 2038-01-19 03:14:07 UTCنعم (بين الجلسة و UTC)طوابع تتبع الأحداث العالمية (created_at)
YEAR1 بايتمن 1901 إلى 2155 (و 0000)لاسنة الصنع، السنة المالية، أو سنة التخرج

ملخص الدرس: درسنا في هذا الدرس أنواع البيانات الزمنية في MySQL 8، وقارنّا DATE وTIME وYEAR، وحلّلنا الفرق المعماري الجوهري بين DATETIME الثابت تقويمياً وTIMESTAMP المحوّل تلقائياً لتوقيت UTC مع دقة الميكروثانية fsp.
الخطوة التالية والدرس القادم: في الدرس القادم سنتعمق في نوع بيانات JSON الأصلي في MySQL 8، بما يشمل التخزين الثنائي المهيكل ودوال البناء والاستخراج ومعاملات المسار.

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

درسنا في هذا الدرس أنواع البيانات الزمنية في MySQL 8، وقارنّا DATE وTIME وYEAR، وحلّلنا الفرق المعماري الجوهري بين DATETIME الثابت تقويمياً وTIMESTAMP المحوّل تلقائياً لتوقيت UTC مع دقة الميكروثانية fsp. الخطوة التالية: في الدرس القادم سنتعمق في نوع بيانات JSON الأصلي في MySQL 8، بما يشمل التخزين الثنائي المهيكل ودوال البناء والاستخراج ومعاملات المسار.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Date Types أنواع التاريخ
تعلّم أنواع بيانات التاريخ والوقت والطابع الزمني في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
للمراجعة
02 Calendar Date and YEAR تمثيل التاريخ التقويمي والسنة
المفهوم الهندسي الأساسي لقسم تمثيل التاريخ التقويمي والسنة في قواعد بيانات MySQL 8 الحديثة.
للمراجعة
03 Time of Day and Durations تخزين الوقت والمدد الزمنية
الصياغة القياسية وقواعد التنفيذ العملي لقسم تخزين الوقت والمدد الزمنية.
للمراجعة
04 DATETIME Versus TIMESTAMP الفرق بين DATETIME والطابع الزمني
آلية التخزين وأفضل ممارسات محرك InnoDB الخاصة بقسم الفرق بين DATETIME والطابع الزمني.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات2

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 2 مفهومةأول بطاقة، أول خطوة
01 UTC UTC
Coordinated Universal Time
التوقيت العالمي المنسق الذي تعتمده MySQL كمرجع موحد لتخزين قيم TIMESTAMP داخلياً على القرص.
للمراجعة
02 FSP FSP
Fractional Seconds Precision
معامل الدقة (من 0 إلى 6) الذي يحدد عدد الخانات العشرية المحفوظة لأجزاء الثانية حتى مستوى الميكروثانية.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. افتح عميل MySQL 8 المحلي ونفّذ استعلام SQL المشروح في قسم تمثيل التاريخ التقويمي والسنة للتحقق من النتائج.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم تخزين الوقت والمدد الزمنية وقارن مخرجات MySQL 8.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

4أسئلة 1أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي4 أسئلة تنتظرك
01

أي نوع زمني في MySQL يحوّل القيم تلقائياً من المنطقة الزمنية للجلسة إلى توقيت UTC عند التخزين؟

ميّز بين النوع المرتبط بمنطقة UTC والنوع التقويمي الحرفي.

02

لماذا يجب تخزين تاريخ انتهاء عقد في عام 2055 باستخدام DATE أو DATETIME بدلاً من TIMESTAMP؟

تذكّر الحد الأعلى لنطاق نوع TIMESTAMP في عام 2038.

03

ما هي أقصى دقة لأجزاء الثانية (fsp) يدعمها كل من DATETIME(fsp) وTIMESTAMP(fsp) في MySQL 8؟

اختر أقصى عدد للخانات العشرية لأجزاء الثانية (مستوى الميكروثانية).

04

كم بايتاً من المساحة التخزينية يستهلك الحقل من نوع YEAR في MySQL 8؟

تذكّر حجم التخزين المضغوط لنوع YEAR.