logo

ترتيب SQL حسب التاريخ

  • ORDER BY عبارة عن جملة في SQL يتم استخدامها مع استعلام SELECT لجلب السجلات بترتيب تصاعدي أو تنازلي من الجدول.
  • مثلما نقوم بفرز الأعداد الصحيحة وقيم السلسلة المخزنة في عمود الجداول، وبالمثل، يمكننا فرز التواريخ المخزنة في عمود جدول SQL.
  • سيتم فرز جميع السجلات بشكل افتراضي بترتيب تصاعدي. لفرز السجلات بترتيب تنازلي، يتم استخدام الكلمة الأساسية DESC.

دعونا نرى بعض الأمثلة العملية لفهم هذا المفهوم بشكل أكثر وضوحا. سوف نستخدم قاعدة بيانات MySQL لكتابة كافة الاستعلامات.

كومة في س

ضع في اعتبارك أننا أنشأنا جدولًا باسم الموظفين في قاعدة بيانات MySQL بالبيانات التالية:

بطاقة تعريف اسم مرتب تاريخ الانضمام تاريخ الميلاد
1 روهيت مور 50000 2020-02-08 1991-01-28 18:06:08
2 كونال موهيت 34000 2021-01-01 1990-05-15 19:10:00
3 سوراب جها 61000 01/05/2015 1983-02-20 12:18:45
4 أنانت ديساي 59000 2018-08-27 1978-06-29 15:45:13
5 كريشنا شارما 48000 2010-10-23 1999-03-21 02:14:56
6 بهافيش جاين 37000 2021-07-03 1998-08-02 13:00:01

مثال 1:

قم بكتابة استعلام لعرض كافة بيانات الموظفين مرتبة تصاعدياً حسب تاريخ ميلادهم.

استفسار:

 mysql> SELECT *FROM employees ORDER BY DOB; 

وبما أننا أردنا فرز السجلات بترتيب تصاعدي لتاريخ ميلاد الموظفين، فقد قمنا بتطبيق جملة ORDER BY على العمود 'DOB'.

سوف تحصل على الإخراج التالي:

بطاقة تعريف اسم مرتب تاريخ الانضمام تاريخ الميلاد
4 أنانت ديساي 59000 2018-08-27 1978-06-29 15:45:13
3 سوراب جها 61000 01/05/2015 1983-02-20 12:18:45
2 كونال موهيت 34000 2021-01-01 1990-05-15 19:10:00
1 روهيت مور 50000 2020-02-08 1991-01-28 18:06:08
6 بهافيش جاين 37000 2021-07-03 1998-08-02 13:00:01
5 كريشنا شارما 48000 2010-10-23 1999-03-21 02:14:56

تظهر النتائج التي تم الحصول عليها من الاستعلام أعلاه أن السجلات يتم عرضها حسب الترتيب التصاعدي لـ DOB.

مثال 2:

قم بكتابة استعلام لعرض كافة بيانات الموظفين مرتبة تنازلياً حسب تاريخ التحاقهم.

استفسار:

 mysql> SELECT *FROM employees ORDER BY Joining_Date DESC; 

نظرًا لأننا أردنا فرز السجلات بالترتيب التنازلي لتاريخ انضمام الموظفين، فقد قمنا بتطبيق جملة ORDER BY مع الكلمة الأساسية DESC في العمود 'Joining_Date'.

سوف تحصل على الإخراج التالي:

بطاقة تعريف اسم مرتب تاريخ الانضمام تاريخ الميلاد
6 بهافيش جاين 37000 2021-07-03 1998-08-02 13:00:01
2 كونال موهيت 34000 2021-01-01 1990-05-15 19:10:00
1 روهيت مور 50000 2020-02-08 1991-01-28 18:06:08
4 أنانت ديساي 59000 2018-08-27 1978-06-29 15:45:13
3 سوراب جها 61000 01/05/2015 1983-02-20 12:18:45
5 كريشنا شارما 48000 2010-10-23 1999-03-21 02:14:56

تظهر النتائج التي تم الحصول عليها من الاستعلام أعلاه أن السجلات يتم عرضها حسب الترتيب التنازلي لتواريخ الانضمام.

مثال 3:

قم بكتابة استعلام لعرض كافة بيانات الموظفين مرتبة تصاعدياً حسب سنة ميلادهم.

استفسار:

سلسلة الإرسال كـ int Java
 mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%Y') AS Year_of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%Y'); 

وبما أننا أردنا فرز السجلات بالترتيب التصاعدي لسنة ميلاد الموظفين، فقد قمنا بتطبيق جملة ORDER BY. يتم تطبيق الدالة DATE_FORMAT () على العمود DOB باستخدام المعلمة '%Y' لاستخراج السنة فقط من 'DOB'.

سوف تحصل على الإخراج التالي:

بطاقة تعريف اسم مرتب تاريخ الانضمام سنة الميلاد
4 أنانت ديساي 59000 2018-08-27 1978
3 سوراب جها 61000 01/05/2015 1983
2 كونال موهيت 34000 2021-01-01 1990
1 روهيت مور 50000 2020-02-08 1991
6 بهافيش جاين 37000 2021-07-03 1998
5 كريشنا شارما 48000 2010-10-23 1999

تظهر النتائج التي تم الحصول عليها من الاستعلام أعلاه أن السجلات يتم عرضها حسب الترتيب التصاعدي لسنة ميلاد الموظف.

مثال 4:

قم بكتابة استعلام لعرض كافة بيانات الموظفين مرتبة تنازلياً حسب ساعة ميلادهم.

استفسار:

 mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%H') AS Hour_Of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%H') DESC; 

نظرًا لأننا أردنا فرز السجلات بالترتيب التنازلي لساعة ميلاد الموظفين، فقد قمنا بتطبيق جملة ORDER BY مع الكلمة الأساسية DESC. يتم تطبيق الدالة DATE_FORMAT () على العمود DOB باستخدام المعلمة '%H' لاستخراج ساعة الميلاد فقط من العمود 'DOB'.

سوف تحصل على الإخراج التالي:

بطاقة تعريف اسم مرتب تاريخ الانضمام ساعة_الميلاد
2 كونال موهيت 34000 2021-01-01 19
1 روهيت مور 50000 2020-02-08 18
4 أنانت ديساي 59000 2018-08-27 خمسة عشر
6 بهافيش جاين 37000 2021-07-03 13
3 سوراب جها 61000 01/05/2015 12
5 كريشنا شارما 48000 2010-10-23 02

تظهر النتائج التي تم الحصول عليها من الاستعلام أعلاه أن السجلات يتم عرضها حسب الترتيب التنازلي لساعة ميلاد الموظف.

مثال 5:

قم بكتابة استعلام لعرض كافة بيانات الموظفين مرتبة تصاعدياً حسب سنة انضمامهم.

Mysql إنشاء مستخدم

استفسار:

 mysql> SELECT ID, Name, Salary, DOB, DATE_FORMAT (Joining_Date, '%Y') AS Year_Of_Joining FROM employees ORDER BY DATE_FORMAT (Joining_Date, '%Y'); 

وبما أننا أردنا فرز السجلات بترتيب تصاعدي لسنة انضمام الموظفين، فقد قمنا بتطبيق جملة ORDER BY. يتم تطبيق الدالة DATE_FORMAT () على العمود Joining_Date باستخدام المعلمة '%Y' لاستخراج السنة فقط من 'Joining_Date'.

سوف تحصل على الإخراج التالي:

بطاقة تعريف اسم مرتب سنة_الإنضمام تاريخ الميلاد
5 كريشنا شارما 48000 2010 1999-03-21 02:14:56
3 سوراب جها 61000 2015 1983-02-20 12:18:45
4 أنانت ديساي 59000 2018 1978-06-29 15:45:13
1 روهيت مور 50000 2020 1991-01-28 18:06:08
2 كونال موهيت 34000 2021 1990-05-15 19:10:00
6 بهافيش جاين 37000 2021 1998-08-02 13:00:01

تظهر النتائج التي تم الحصول عليها من الاستعلام أعلاه أن السجلات يتم عرضها حسب الترتيب التصاعدي لسنة التحاق الموظفين.

مثال 6:

قم بكتابة استعلام لعرض كافة بيانات الموظفين مرتبة تنازليا حسب يوم التحاق الموظفين.

استفسار:

 mysql> SELECT ID, Name, Salary, DAY (Joining_Date) AS Day_Of_Joining, DOB FROM employees ORDER BY DAY (Joining_Date) DESC; 

نظرًا لأننا أردنا فرز السجلات بالترتيب التنازلي ليوم انضمام الموظفين، فقد قمنا بتطبيق جملة ORDER BY مع الكلمة الأساسية DESC. يتم تطبيق وظيفة DAY () على العمود 'Joining_Date' لاستخراج يوم الانضمام فقط من Joining_Date.

سوف تحصل على الإخراج التالي:

بطاقة تعريف اسم مرتب يوم_الانضمام تاريخ الميلاد
4 أنانت ديساي 59000 27 1978-06-29 15:45:13
5 كريشنا شارما 48000 23 1999-03-21 02:14:56
1 روهيت مور 50000 8 1991-01-28 18:06:08
6 بهافيش جاين 37000 3 1998-08-02 13:00:01
2 كونال موهيت 34000 1 1990-05-15 19:10:00
3 سوراب جها 61000 1 1983-02-20 12:18:45

تظهر النتائج التي تم الحصول عليها من الاستعلام أعلاه أن السجلات يتم عرضها حسب الترتيب التنازلي ليوم انضمام الموظفين.

مثال 7:

كتابة استعلام لعرض كافة بيانات الموظفين مرتبة تصاعدياً حسب تاريخ ميلاد الموظفين.

استفسار:

 mysql> SELECT ID, Name, Salary, Joining_Date, DAY (DOB) AS Day_Of_Birth FROM employees ORDER BY DAY (DOB); 

وبما أننا أردنا فرز السجلات بالترتيب التصاعدي ليوم ميلاد الموظفين، فقد قمنا بتطبيق جملة ORDER BY. يتم تطبيق وظيفة DAY () على العمود 'DOB' لاستخراج يوم الميلاد فقط من DOB.

سوف تحصل على الإخراج التالي:

بطاقة تعريف اسم مرتب سنة_الإنضمام يوم الميلاد
6 بهافيش جاين 37000 2021-07-03 2
2 كونال موهيت 34000 2021-01-01 خمسة عشر
3 سوراب جها 61000 01/05/2015 عشرين
5 كريشنا شارما 48000 2010-10-23 واحد وعشرين
1 روهيت مور 50000 2020-02-08 28
4 أنانت ديساي 59000 2018-08-27 29

تظهر النتائج التي تم الحصول عليها من الاستعلام أعلاه أن السجلات يتم عرضها حسب الترتيب التصاعدي لتاريخ ميلاد الموظف.

مثال 8:

كتابة استعلام لعرض كافة بيانات الموظفين مرتبة تصاعدياً حسب شهر ميلاد الموظف.

استفسار:

 mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (DOB); 

بطاقة تعريف اسم مرتب تاريخ الانضمام تاريخ الميلاد
1 روهيت مور 50000 2020-02-08 1991-01-28 18:06:08
3 سوراب جها 61000 01/05/2015 1983-02-20 12:18:45
5 كريشنا شارما 48000 2010-10-23 1999-03-21 02:14:56
2 كونال موهيت 34000 2021-01-01 1990-05-15 19:10:00
4 أنانت ديساي 59000 2018-08-27 1978-06-29 15:45:13
6 بهافيش جاين 37000 2021-07-03 1998-08-02 13:00:01

تظهر النتائج التي تم الحصول عليها من الاستعلام أعلاه أن السجلات يتم عرضها حسب الترتيب التصاعدي لشهر ميلاد الموظف.

مثال 9:

قم بكتابة استعلام لعرض كافة بيانات الموظفين مرتبة تصاعدياً حسب شهر التحاق الموظف.

استفسار:

قاعدة البيانات
 mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (Joining_Date); 

وبما أننا أردنا فرز السجلات بترتيب تصاعدي لشهر انضمام الموظفين، فقد قمنا بتطبيق جملة ORDER BY. يتم تطبيق الدالة MONTH () على العمود 'Joining_Date' لاستخراج شهر الانضمام فقط من Joining_Date.

سوف تحصل على الإخراج التالي:

بطاقة تعريف اسم مرتب تاريخ الانضمام تاريخ الميلاد
2 كونال موهيت 34000 2021-01-01 1990-05-15 19:10:00
1 روهيت مور 50000 2020-02-08 1991-01-28 18:06:08
3 سوراب جها 61000 01/05/2015 1983-02-20 12:18:45
6 بهافيش جاين 37000 2021-07-03 1998-08-02 13:00:01
4 أنانت ديساي 59000 2018-08-27 1978-06-29 15:45:13
5 كريشنا شارما 48000 2010-10-23 1999-03-21 02:14:56

تظهر النتائج التي تم الحصول عليها من الاستعلام أعلاه أن السجلات يتم عرضها حسب الترتيب التصاعدي لشهر انضمام الموظف.