كيفية العمل بفعالية مع التواريخ والأوقات في MySQL

كيفية العمل بفعالية مع التواريخ والأوقات في MySQL

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





قد يبدو العمل معهم بكفاءة داخل قاعدة البيانات أمرًا مربكًا في بعض الأحيان ، سواء كان العمل عبر مناطق زمنية مختلفة ، وإضافة / طرح التواريخ ، والعمليات الأخرى.





تعلم وظائف MySQL المتنوعة المتاحة للتعامل بسهولة مع التواريخ / الأوقات وإدارتها داخل قاعدة البيانات الخاصة بك.





العمل مع المناطق الزمنية

للمساعدة في الحفاظ على الأشياء موحدة ، يجب أن تعمل فقط مع التواريخ / الأوقات في المنطقة الزمنية UTC. في كل مرة تقوم فيها بإنشاء اتصال بقاعدة بيانات MySQL ، يجب عليك تبديل المنطقة الزمنية إلى التوقيت العالمي المنسق (UTC) ، والذي يمكن القيام به باستخدام عبارة SQL التالية:

SET TIME_ZONE = '+0:00'

نظرًا لأنه سيتم الآن حفظ جميع التواريخ بتنسيق UTC ، فأنت تعرف دائمًا ما تعمل به ، مما يجعل الأمور أكثر بساطة ومباشرة.



أفضل تطبيق تقويم مجاني لنظام Android

عند الضرورة يمكنك بسهولة تحويل المنطقة الزمنية من أي قيمة تاريخ / وقت مع في متناول اليد CONVERT_TZ () وظيفة MySQL. تحتاج إلى معرفة الإزاحة أولاً ، على سبيل المثال ، توقيت المحيط الهادي على الساحل الغربي لأمريكا الشمالية هو التوقيت العالمي المنسق -08: 00 ، لذلك يمكنك استخدام:

SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');

وينتج عنه 2021-02-04 13:47:23 وهو بالضبط الصحيح. تم تمرير الحجج الثلاث إلى CONVERT_TZ () هي أولاً التاريخ / الطابع الزمني الذي تبدأ به (استخدم الآن () للوقت الحالي) ، والثاني سيكون دائمًا '+0: 00' نظرًا لأن جميع التواريخ يتم إجبارها على UTC في قاعدة البيانات ، والأخير هو الإزاحة التي نرغب في تحويل التاريخ إليها.





إضافة / طرح التواريخ

في كثير من الأحيان تحتاج إلى الإضافة إلى التواريخ أو طرحها منها ، مثل ما إذا كنت بحاجة إلى استرداد السجلات من أسبوع مضى ، أو جدولة شيء ما بعد شهر من الآن.

الحمد لله MySQL لديه الامتياز DATE_ADD () و DATE_SUB () وظائف تجعل هذه المهمة سهلة للغاية. على سبيل المثال ، يمكنك طرح أسبوعين من التاريخ الحالي باستخدام عبارة SQL:





SELECT DATE_SUB(now(), interval 2 week);

إذا أردت بدلاً من ذلك إضافة ثلاثة أيام إلى طابع زمني موجود ، يمكنك استخدام:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

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

على سبيل المثال ، إذا أردت استرداد جميع عمليات تسجيل الدخول التي حدثت في آخر 34 دقيقة ، فيمكنك استخدام عبارة SQL مثل:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

كما ترى ، سيؤدي هذا إلى استرداد جميع السجلات من ملف تسجيلات الدخول جدول بتاريخ تسجيل دخول أكبر من الوقت الحالي مطروحًا منه 45 دقيقة ، أو بعبارة أخرى ، 45 دقيقة الماضية.

احصل على الفرق بين التواريخ

تحتاج أحيانًا إلى معرفة مقدار الوقت المنقضي بين تاريخين. يمكنك بسهولة الحصول على عدد الأيام بين تاريخين مختلفين باستخدام ملف DATEDIFF وظيفة ، مثل عبارة SQL أدناه:

SELECT DATEDIFF(now(), '2020-12-15');

ال DATEDIFF تأخذ الدالة وسيطين ، كلتاهما طوابع تاريخ / وقت وتعطي عدد الأيام بينهما. سيوضح المثال أعلاه عدد الأيام المنقضية من 15 ديسمبر 2020 حتى اليوم.

للحصول على عدد الثواني بين تاريخين ، فإن TO_SECONDS () يمكن أن تكون الوظيفة مفيدة ، على سبيل المثال:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

سينتج عن ذلك عدد الثواني بين التاريخين المقدمين.

استخراج شرائح من التواريخ

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

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

قد ينتج عن عبارات SQL أعلاه 02 والساعة الحالية و 196 15 سبتمبر هو اليوم 196 من العام. فيما يلي قائمة بجميع وظائف استخراج التاريخ المتاحة ، كل منها يأخذ وسيطة واحدة فقط ، التاريخ الذي يتم استخراجه منه:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

على سبيل المثال ، إذا كنت تريد فقط استرداد الشهر والسنة اللذين تم إنشاء جميع المستخدمين فيهما ، فيمكنك استخدام عبارة SQL مثل:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

سيؤدي هذا إلى استرداد جميع السجلات داخل المستخدمين الجدول وإظهار المعرف # ، والشهر والسنة التي تم فيها إنشاء كل مستخدم.

تجميع السجلات حسب فترة التاريخ

أحد الاستخدامات الممتازة لوظائف التاريخ هو القدرة على تجميع السجلات حسب فترة التاريخ باستخدام مجموعة من ضمن عبارات SQL الخاصة بك. على سبيل المثال ، ربما ترغب في سحب المبلغ الإجمالي لجميع الطلبات في عام 2020 مجمعة حسب الشهر. يمكنك استخدام جملة SQL مثل:

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

سيؤدي هذا إلى استرداد جميع الطلبات التي تم تقديمها في عام 2020 ، وتجميعها حسب الشهر الذي تم إنشاؤها فيه ، وإرجاع 12 سجلًا توضح المبلغ الإجمالي المطلوب كل شهر من العام.

يرجى ملاحظة أنه من الأفضل دائمًا تجنب استخدام وظائف التاريخ مثل عام() ضمن جملة WHERE من عبارات SQL ، وبدلاً من ذلك استخدم امتداد ما بين عامل التشغيل كما هو موضح في المثال أعلاه.

لا تخلط مع التواريخ مرة أخرى

باستخدام المعرفة المذكورة أعلاه ، يمكنك الآن العمل بكفاءة وترجمتها وتنفيذها في التواريخ والأوقات في مجموعة واسعة من حالات الاستخدام.

تذكر دائمًا استخدام التوقيت العالمي المنسق (UTC) عند التعامل مع التواريخ من أجل التبسيط ، واستفد من النصائح المذكورة أعلاه لإدارة التواريخ بكفاءة داخل برنامجك ، سواء أكان ذلك لإكمال العمليات الحسابية البسيطة أو لسحب التقارير بسهولة مجمعة حسب فترات التاريخ.

إذا كنت جديدًا إلى حد ما على SQL ، فتأكد من التحقق من هذه أوامر SQL الأساسية للمساعدة في تحسين استخدام SQL.

يشارك يشارك سقسقة بريد الالكتروني كيفية إنشاء مستندات وتقارير احترافية في برنامج Microsoft Word

يفحص هذا الدليل عناصر تقرير احترافي ويراجع هيكلة وتصميم وإنهاء المستند الخاص بك في Microsoft Word.

اقرأ التالي
مواضيع ذات صلة نبذة عن الكاتب مات ديزاك(18 مقالة منشورة) المزيد من Matt Dizak

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك