logo

وظائف التاريخ والوقت في MySQL

المناولة التاريخ والوقت تعد البيانات في MySQL ضرورية للعديد من عمليات قواعد البيانات، خاصة عندما يتعلق الأمر بمعالجة مهام جدولة الطوابع الزمنية أو إنشاء مهام مستندة إلى الوقت. يوفر MySQL مجموعة متنوعة من وظائف التاريخ والوقت التي تساعد المستخدمين على التعامل مع قيم التاريخ وإجراء العمليات الحسابية وتنسيقها حسب الحاجة.

تتيح هذه الوظائف للمطورين إجراء عمليات حسابية واستخراج أجزاء معينة من التاريخ أو حتى تنسيق الإخراج لتسهيل القراءة. في هذه المقالة، سوف نستكشف وظائف تاريخ MySQL الأكثر استخدامًا ونشرح تركيبها ونقدم أمثلة ونرشدك إلى كيفية استخدامها بفعالية

فهم أنواع بيانات التاريخ والوقت في MySQL

عند العمل مع التواريخ في MySQL، قد يكون الأمر صعبًا بالنسبة للمبتدئين خاصةً لأن تنسيق التاريخ في قاعدة البيانات يجب أن يتطابق مع تنسيق بيانات الإدخال أثناء الإدراج. في كثير من الحالات، بدلاً من مجرد استخدام تاريخ بسيط، قد نحتاج إلى تخزين التاريخ والوقت اعتمادًا على حالة الاستخدام. هذا هو المكان DATETIME و TIMESTAMP أنواع البيانات تدخل حيز التنفيذ.



يوفر MySQL أنواع البيانات التالية لتخزين قيم التاريخ والوقت:

1. التاريخ :

  • شكل :YYYY-MM-DD
  • يستخدم لتخزين التاريخ فقط (السنة والشهر واليوم) دون أي مكون زمني.

2. التاريخ والوقت :

  • شكل :YYYY-MM-DD HH:MM:SS
  • يقوم بتخزين التاريخ والوقت مما يجعله مفيدًا عندما تحتاج إلى التقاط أوقات محددة مع التاريخ.

3. الطابع الزمني :

  • شكل :YYYY-MM-DD HH:MM:SS
  • مماثلة لDATETIMEلكنTIMESTAMPيتضمن أيضًا دعم المنطقة الزمنية. يتم تحديثه تلقائيًا إلى الطابع الزمني الحالي عند تعديل السجل مما يجعله مثاليًا لتتبع التغييرات التي تطرأ على السجلات بمرور الوقت.

4. سنة :

  • شكل :YYYYأوYY
  • يستخدم لتخزين السنة فقط والتي يمكن أن تكون مفيدة للتطبيقات التي تتطلب السنة فقط مثل تتبع سنوات الميلاد أو السنوات المالية.

وظائف التاريخ والوقت في MySQL

الآن دعنا نتعمق في وظائف تاريخ MySQL التي يمكنك استخدامها لمعالجة بيانات التاريخ والوقت والاستعلام عنها بشكل فعال.

1. الآن () - احصل على التاريخ والوقت الحاليين

ال الآن() تقوم الوظيفة باسترداد التاريخ والوقت الحاليين YYYY-MM-DD HH:MI:SS شكل.

استفسار:

SELECT NOW();  

الإخراج:

الآن طريقة إخراج الصورة' title=

2. CURDATE() - احصل على التاريخ الحالي فقط

إذا كنا بحاجة فقط إلى التاريخ الحالي دون الجزء الزمني الذي يمكننا استخدامه CURDATE() الذي يعيد التاريخ في YYYY-MM-DD شكل.

استفسار:

SELECT CURDATE();  

الإخراج: 

الإخراج2' loading='lazy' title=

3.CURTIME() - احصل على الوقت الحالي فقط

تقوم الدالة CURTIME() بإرجاع الوقت الحالي سمو:مي:SS التنسيق باستثناء التاريخ.

تاريخ جافا سكريبت

استفسار:

SELECT CURTIME();  

الإخراج: 

الإخراج3' loading='lazy' title=

4. DATE() - استخراج جزء التاريخ من قيمة DATETIME

الDATE()تقوم الدالة باستخراج جزء التاريخ فقط من aDATETIMEأوTIMESTAMPقيمة التخلص من الوقت.

مثال: للحصول على طاولة تسمى users :

بطاقة تعريف اسم وقت الميلاد
4120يمارس1996-09-26 16:44:15.581

استفسار:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

الإخراج:

اسم تاريخ الميلاد
يمارس26/09/1996

5. EXTRACT () - استخراج أجزاء تاريخ محددة

EXTRACT()يستخدم لاستخراج أجزاء محددة من التاريخ مثل اليوم والشهر أو السنة. يمكن أن تكون هذه الوظيفة مفيدة بشكل خاص عند تحليل أو مقارنة أجزاء مختلفة من التاريخ. يمكن اعتبار عدة وحدات ولكن يتم استخدام بعضها فقط مثل ميكروثانية دقيقة دقيقة ساعة يوم أسبوع شهر ربع سنة إلخ. و"التاريخ" هو تعبير تاريخ صالح.

بناء الجملة:

شريط الأدوات المصغر إكسل

استخراج (وحدة من التاريخ)؛

الاستعلام عن يوم الاستخراج:

SELECT Name Extract(DAY FROM   
BirthTime) AS BirthDay FROM Test;

الإخراج: 

اسم عيد ميلاد
يمارس26

استعلام لاستخراج السنة:

SELECT Name Extract(YEAR FROM BirthTime)  
AS BirthYear FROM Test;

الإخراج: 

اسم سنة الميلاد
يمارس1996

الاستعلام عن استخراج الثواني:

SELECT Name Extract(SECOND FROM   
BirthTime) AS BirthSecond FROM Test;

الإخراج:

اسم الميلادالثانية
يمارس581

6.DATE_ADD() - إضافة فترات زمنية إلى التاريخ

ال DATE_ADD() تتيح لك الوظيفة إضافة فترات زمنية (مثل الأيام والأشهر والسنوات) إلى تاريخ أوDATETIMEقيمة.

بناء الجملة:

DATE_ADD(تاريخ نوع EXPR INTERVAL);

مثال: للجدول أدناه المسمى " امتحان '

بطاقة تعريف اسم وقت الميلاد
4120يمارس1996-09-26 16:44:15.581

الاستعلام الى أضف سنة واحدة إلى التاريخ

SELECT Name DATE_ADD(BirthTime INTERVAL   
1 YEAR) AS BirthTimeModified FROM Test;

الإخراج:

اسم تم تعديل وقت الميلاد
يمارس1997-09-26 16:44:15.581

استعلام لإضافة 30 يومًا إلى تاريخ

حالة بوابة
SELECT Name DATE_ADD(BirthTime   
INTERVAL 30 DAY) AS BirthDayModified FROM Test;

الإخراج:

اسم تاريخ الميلاد تم التعديل
يمارس1996-10-26 16:44:15.581

استعلام لإضافة 4 ساعات إلى تاريخ

SELECT Name DATE_ADD(BirthTime INTERVAL  
4 HOUR) AS BirthHourModified FROM Test;

الإخراج: 

اسم الميلادالثانية
يمارس1996-10-26 20:44:15.581

7. تاريخ () - أوجد الفرق بين تاريخين

ترجع هذه الدالة عدد الأيام بين تاريخين. 

بناء الجملة:

DATEDIFF(intervaldate1 date2);

الفاصل الزمني - دقيقة / ساعة / شهر / سنة الخ

date1 & date2- تعبير التاريخ/الوقت

الاستعلام الى أوجد الفرق بين تاريخين

SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;  

الإخراج: 

DateDiff

8.DATE_FORMAT() - تاريخ ووقت التنسيق

يسمح لنا DATE_FORMAT() بتنسيق ملف تاريخ التاريخ والوقت أو الطابع الزمني القيمة إلى تنسيق مخصص باستخدام العناصر النائبة.

معنى xdxd

بناء الجملة:

DATE_FORMAT(تنسيق التاريخ);

التاريخ هو تاريخ صالح ويحدد التنسيق تنسيق الإخراج للتاريخ/الوقت. التنسيقات التي يمكن استخدامها هي:

  • %a-اسم يوم الأسبوع المختصر (الأحد-السبت)
  • %b-اسم الشهر المختصر (يناير-ديسمبر)
  • %c-الشهر رقمي (0-12)
  • %D-يوم من الشهر مع اللاحقة الإنجليزية (0، 1، 2، 3)
  • %d-يوم من الشهر رقمي (00-31)
  • %e-يوم من الشهر رقمي (0-31)
  • %f-ميكروثانية (000000-999999)
  • %H-ساعة (00-23)
  • %h-ساعة (01-12)
  • %I-ساعة (01-12)
  • %i-دقائق رقمية (00-59)
  • %ي-يوم من السنة (001-366)
  • %k-ساعة (0-23)
  • %l-ساعة (1-12)
  • %M-اسم الشهر (يناير-ديسمبر)
  • %m-شهر رقمي (00-12)
  • %p-AM أو PM
  • %r-الوقت 12 ساعة (hh:mm: ss متبوعًا صباحًا أو مساءً)
  • %S-ثواني (00-59)
  • %s-ثواني (00-59)
  • %T-الوقت 24 ساعة (ساعة:دقيقة:ث ثانية)
  • %U-Week (00-53) حيث يكون يوم الأحد هو أول يوم في الأسبوع
  • %u-الأسبوع (00-53) حيث يكون يوم الاثنين هو أول يوم في الأسبوع
  • %V-Week (01-53) حيث الأحد هو أول يوم في الأسبوع المستخدم مع %X
  • %v-Week (01-53) حيث يكون يوم الاثنين هو أول يوم في الأسبوع المستخدم مع %x
  • %W-اسم أيام الأسبوع (الأحد-السبت)
  • %w-يوم الأسبوع (0=الأحد 6=السبت)
  • %X-Year للأسبوع الذي يكون فيه يوم الأحد هو أول يوم في الأسبوع، ويتم استخدام أربعة أرقام مع %V
  • %x-السنة للأسبوع حيث يكون يوم الاثنين هو اليوم الأول من الأسبوع، ويتم استخدام أربعة أرقام مع %v
  • %Y-Year عدد مكون من أربعة أرقام
  • %y-السنة رقمية مكونة من رقمين

الاستعلام عن تنسيق التاريخ

SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;

الإخراج:

Formatted_date
الخميس 10 أبريل 2025

أفضل الممارسات للتعامل مع التاريخ والوقت في MySQL

1. استخدم دائمًا تنسيقات التاريخ المناسبة

عند إدراج التواريخ أو تحديثها، تأكد من اتباع تنسيقات MySQL المتوقعة (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). وهذا يضمن أن استعلاماتك ترجع النتائج المتوقعة دون أخطاء.

2. اعتبارات المنطقة الزمنية مع الطابع الزمني

بينماDATETIMEلا يخزن معلومات المنطقة الزمنيةTIMESTAMPيفعل. إذا كان تطبيقك حساسًا للمنطقة الزمنية (على سبيل المثال في الطلبات الدولية)، ففكر في استخدامهTIMESTAMPلحقول التاريخ والوقت التي تحتاج إلى مراعاة مناطق زمنية مختلفة.

3. التعامل مع نطاقات التاريخ في الاستعلامات

لتصفية البيانات بناءً على النطاقات الزمنية (على سبيل المثال، استرداد جميع السجلات من شهر أو سنة معينة) تأكد من استخدام مقارنات التاريخ المناسبة فيWHEREبند. مثال:

SELECT * FROM orders  
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';

4. اعتبارات الأداء

عند العمل مع وظائف التاريخ والوقت، خاصة في مجموعات البيانات الكبيرة، يجب مراعاة التأثير على الأداء. تجنب استخدام وظائف مثلNOW()أوCURDATE()فيWHEREجملة لأنها يمكن أن تبطئ الاستعلامات عند التعامل مع الجداول الكبيرة.

خاتمة

وظائف التاريخ والوقت في MySQL هي أدوات أساسية ل التعامل مع و التلاعب البيانات المؤقتة داخل قواعد البيانات الخاصة بك. من خلال إتقان وظائف مثلNOW() CURDATE() DATE_ADD() DATEDIFF()وDATE_FORMAT()يمكنك العمل بسهولة مع الحسابات على أساس الوقت مقارنات و التنسيقات . إن مفتاح الاستخدام الفعال لهذه الوظائف هو فهم تركيبها ومتى وكيفية استخدامها وتأثيراتها على الأداء في مجموعات البيانات الكبيرة. باستخدام هذه المعرفة، ستتمكن من إنشاء استعلامات أكثر كفاءة ودقيقة وقابلة للتطوير لجميع احتياجاتك المتعلقة بالتاريخ والوقت في MySQL.

إنشاء اختبار