php mysql : التعامل مع  التاريخ و الوقت

sql حقول التاريخ و الوقت

آخر تحيين: 10-01-2015

sql دوال التاريخ و الوقت Unix Time Stamp


SQL حقول التاريخ و الوقت

في الدّرس السابق ، تعرفنا على الطريقة الأولى للتعامل مع الوقت و التاريخ ، بالإعتماد على توقيت ظهور Unix . و أنشأنا لذلك حقلا عاديا من نوع INT في الجدول و اكتفينا بتخزين عدد الثواني (1394723852 ). في هذا الدّرس سنتعرف على نوع جديد من الحقول ، مُختص في تخزين تاريخ/وقت بشكل مقروء (2014-03-16) .
توفر لنا قاعدة البيانات 4 أنواع من حقول التاريخ ، و تختلف حسب طريقة التخزين :

جدول لأنواع حقول تاريخ/وقت و الشكل العام لكتابتها مع أمثلة توضيحية
نوع الحقلالشكل العامطريقة التخزين
DATEYYYY-MM-DD2014-03-16
DATETIMEYYYY-MM-DD HH:ii:SS2014-03-16 21:45:17
TIMESTAMPYYYY-MM-DD HH:ii:SS2014-03-16 21:45:17
YEARYYYY أو YY2014 أو 14
Y="السنة" ,M="الشهر", D="اليوم", H="الساعة", i="الدقيقة", S="الثانية"

النوعين الذيْن سنحتاجهما غالبا ، هما :

  • date : إذا كنا محتاجين لتخزين التاريخ فقط ، مثل : "2014-03-16"
  • datetime : "إذا أردنا تخزين التاريخ و الوقت معاً : "2014-03-16 21:45:17

سندرس هذين الحقلين عبر أمثلة نظرية لتخزين و عرض تاريخ/وقت . و في الدّرس المقبل سنُوظّف دوال SQL التي تُتيح لنا التعامل باحترافية معها ، عبر أمثلة تطبيقية .
لهذا سنشتغل على تمريننا السابق "إنشاء صفحة الدّردشة " . سنقوم بتحسينه و ذلك بإضافة تاريخ التعليق أو الرّد .
أول شيء يجب أن نضيف حقلا لجدولنا "chat" . لتخزين تواريخ الرّدود . و سنسمّيه مثلا : date_creation
إذا لم يكن لديكم جدول chat . يمكنكم إضافة هذا الحقل إلى أي جدول تريدونه ، و اتبعوا الطريقة لتخزين التاريخ و عرضه
إفتحوا الصفحة التي تضم هيكل جدولكم في phpMyAdmin كما رأينا في الدّرس السابق . ثم أضيفوا حقلا :



قوموا بملأ الحقل بالمعطيات التالية :

NameType
date_creationDATETIME

SQL التعامل مع حقول التاريخ و الوقت

للتعامل مع التاريخ و الوقت . أهم شيء يجب تتذكّروه هو احترام طريقة كتابة تاريخ/وقت كما في الحقل الذي حدّدناه .
في مثالنا قمنا باختيار حقل من نوع DATETIME (راجع الجدول أعلى) ، لهذا بالإضافة إلى التاريخ يجب أن نضيف الوقت أيضا في استعلامنا . مثلا ، إذا أردنا عرض الرّدود الخاصة بيوم مُحدّد :

SELECT * FROM chat WHERE date_creation = '2014-03-16 00:00:00'

في هذه الحالة ، إضافة الساعة و الدقيقة و الثانية : جد ضروري ، لو كتبنا التاريخ فقط ، كما في المثال التالي : SELECT * FROM chat WHERE date_creation = '2014-03-16' لما حصلنا على شيء . هذه الشيفرة تكون ذات فائدة لو كان حقلنا من نوع DATE .

يمكننا استعمال معايير الإختيار التي رأيناها سابقا ، مثلا لاختيار البيانات التي أضيفت بعد تاريخ 16-03-2014 :
SELECT * FROM chat WHERE date_creation > '2014-03-16 00:00:00'

أريد أن أثير انتباهكم إلى معيار خاص ، نستعمله عندما نريد اختيار بيانات بين تاريخين مُحدّدين . مثلا لاختيار الرّدود التي أضيفت بين تاريخ "09-03-2014" و "16-03-2014" . سنستخدم المعيار BETWEEN
SELECT * FROM chat WHERE date_creation BETWEEN '2014-03-09 00:00:00' AND '2014-03-16 00:00:00'

BETWEEN : تعني " بَيْنَ " .

لننهي هذا الدّرس النّظري بمثال لإدخال تاريخ/وقت . ثم ننتقل للجزء التطبيقي

INSERT INTO chat (author, content, date_creation) VALUES 
('omar','blabla...','2014-03-16 21:45:17')

أثناء التعامل مع تاريخ/وقت ، لن نحتاج غالبا لهذ الطّرق اليدوية لتخزينه . بدل ذلك سنستخدم دوال SQL