لقد واجهت مشكلة في العمل اليوم وكنت بحاجة للاستعلام حسب الوقت، ولكن نتائج الاستعلام كانت غير صحيحة. على سبيل المثال، إذا كنت تريد معرفة الأعضاء الذين قاموا بالتسجيل في الموقع بين 12-10-2007 و31-10-2007، بعد تحديد التاريخ اضغط على زر الاستعلام، وستجد أن المعلومات الخاصة بالأعضاء المسجلين بتاريخ 31-10-2007 هو في الأساس لا يظهر، والنتائج هي نفسها بعد عدة اختبارات. وجد المصحح أن هناك مشكلة في عبارة SQL.
عبارة SQL كما يلي: SELECT * FROM userinfo WHERE regtime >= '2007-10-12' AND regtime <= '2007-10-31'. للوهلة الأولى، يبدو أنه لا يوجد خطأ في عبارة SQL هذه، ولكن بعد مقارنة القيم المحفوظة في الحقول المقابلة في قاعدة البيانات، تبين أن القيم المحفوظة ليست في شكل بسيط date، ولكن في شكل تاريخ + وقت، أي: yyyy-MM-dd HH:mm :ss، عندما تحدد عبارة SQL حجم regtime و"2007-10-31"، ستعتقد أن "2007- 10-31' مكتوبة بشكل غير كامل، لذلك لن تعتبر القيمتان متساويتين. ما يجب القيام به؟
لا تقلق، يوفر لنا ASP وظائف إضافة وطرح التاريخ لمساعدتنا في حل هذه المشكلة.
1. أضف التواريخ
وظيفة إضافة التاريخ
إرجاع التاريخ الذي تمت إضافة الفاصل الزمني المحدد إليه.
DateAdd (الفاصل الزمني، الرقم، التاريخ)
يحتوي بناء جملة الدالة DateAdd على المعلمات التالية
(1) مطلوب الفاصلة. تعبير سلسلة يمثل الفاصل الزمني المراد إضافته. راجع قسم الإعدادات لمعرفة القيم الرقمية.
(2) الرقم مطلوب. تعبير رقمي يشير إلى عدد الفواصل الزمنية المراد إضافتها. يمكن أن تكون التعبيرات الرقمية موجبة (الحصول على تاريخ في المستقبل) أو سلبية (الحصول على تاريخ في الماضي).
(3) التاريخ مطلوب. متغير أو نص يمثل التاريخ الذي سيتم إضافة الفاصل الزمني إليه.
يثبت
يمكن أن تحتوي معلمة الفاصل الزمني على القيم التالية:
وصف الإعداد
سنة
ف الربع
م الشهر
y عدد أيام السنة
د يوم
ث يوم من أيام الأسبوع
أسابيع رطب
ساعات ح
ن دقيقة
ثواني
يوضح
يمكنك استخدام الدالة DateAdd لإضافة أو طرح فاصل زمني محدد من تاريخ. على سبيل المثال، يمكنك استخدام DateAdd لحساب تاريخ بعد 30 يومًا من اليوم الحالي أو وقت بعد 45 دقيقة من الآن. لإضافة فاصل زمني بالأيام حتى الآن، يمكنك استخدام أيام السنة (y) أو الأيام (d) أو أيام الأسبوع (w).
لا تقوم الدالة DateAdd بإرجاع تواريخ غير صالحة. يضيف المثال التالي شهرًا واحدًا إلى 31 يناير 1995:
تاريخ جديد = تاريخ إضافة (م، 1، 31 يناير 95)
في هذا المثال، تقوم DateAdd بإرجاع 28 فبراير 1995، وليس 31 فبراير 1995. إذا كان التاريخ هو 31 يناير 1996، فسيتم إرجاع 29 فبراير 1996 لأن 1996 سنة كبيسة.
إذا كان التاريخ المحسوب قبل عام 100 ميلادي، فسيحدث خطأ.
إذا لم يكن الرقم قيمة طويلة، فسيتم تقريبه إلى أقرب عدد صحيح قبل الحساب.
2. تاريخ الطرح
دالة DateDiff
إرجاع الفاصل الزمني بين تاريخين.
DateDiff(الفاصل الزمني، التاريخ1، التاريخ2 [، اليوم الأول من الأسبوع[، الأسبوع الأول من العام]])
يحتوي بناء جملة الدالة DateDiff على المعلمات التالية:
(1) مطلوب الفاصلة. تعبير سلسلة يُستخدم لحساب الفاصل الزمني بين التاريخ 1 والتاريخ 2. راجع قسم الإعدادات لمعرفة القيم الرقمية.
(2) التاريخ 1، التاريخ 2 مطلوبان. تعبير التاريخ. تاريخان يستخدمان للحساب.
(3) اليوم الأول من الأسبوع اختياري. ثابت يحدد اليوم الأول من الأسبوع. إذا لم يتم تحديده، فسيتم تعيينه افتراضيًا إلى يوم الأحد. راجع قسم الإعدادات لمعرفة القيم الرقمية.
(4) الأسبوع الأول من العام اختياري. الثابت الذي يحدد الأسبوع الأول من السنة. إذا لم يتم تحديده، فسيتم تعيينه افتراضيًا إلى الأسبوع الذي يبدأ في الأول من يناير. راجع قسم الإعدادات لمعرفة القيم الرقمية.
يثبت
يمكن أن تحتوي معلمة الفاصل الزمني على القيم التالية:
وصف الإعداد
سنة
ف الربع
م الشهر
y عدد أيام السنة
د يوم
ث يوم من أيام الأسبوع
أسابيع رطب
ساعات ح
ن دقيقة
ثواني
يمكن أن تحتوي المعلمة firstdayofweek على القيم التالية:
وصف القيمة الثابتة
vbUseSystem 0 استخدم إعداد API لدعم اللغة الوطنية (NLS).
vbSunday 1 الأحد (افتراضي)
vbMonday 2 الاثنين
vbالثلاثاء 3 الثلاثاء
vbالأربعاء 4 الأربعاء
vbالخميس 5 الخميس
vbالجمعة 6 الجمعة
vbالسبت 7 السبت
يمكن أن تحتوي المعلمة firstweekofyear على القيم التالية:
وصف القيمة الثابتة
vbUseSystem 0 استخدم إعداد API لدعم اللغة الوطنية (NLS).
vbFirstJan1 1 يبدأ بالأسبوع الذي يبدأ في الأول من يناير (افتراضي).
يبدأ vbFirstFourDays 2 بالأسبوع الأول من العام الجديد الذي يتكون من أربعة أيام على الأقل.
يبدأ vbFirstFullWeek 3 مع أول أسبوع كامل من العام الجديد.
يوضح
يتم استخدام الدالة DateDiff لتحديد عدد الفواصل الزمنية المحددة الموجودة بين تاريخين. على سبيل المثال، يمكنك استخدام DateDiff لحساب عدد الأيام بين تاريخين، أو عدد الأسابيع بين اليوم وآخر يوم في السنة.
لحساب عدد الأيام بين التاريخ 1 والتاريخ 2، يمكنك استخدام عدد الأيام في السنة (ص) أو الأيام (د). عندما يكون الفاصل الزمني هو عدد أيام الأسبوع (w)، تقوم الدالة DateDiff بإرجاع عدد الأسابيع بين تاريخين. إذا كان date1 هو يوم الاثنين، فإن DateDiff يحسب عدد أيام الاثنين قبل date2. تحتوي هذه النتيجة على date2 ولكن ليس date1. إذا كان الفاصل الزمني هو أسابيع (ww)، فإن الدالة DateDiff ترجع عدد الأسابيع بين تاريخين في جدول التقويم. تقوم الدالة بحساب عدد أيام الأحد بين التاريخ 1 والتاريخ 2. سيقوم DateDiff بتقييم date2 إذا كان date2 يوم أحد، ولكن ليس date1 حتى لو كان date1 يوم أحد.
إذا كان التاريخ 1 أحدث من التاريخ 2، فستُرجع الدالة DateDiff رقمًا سالبًا.
تؤثر المعلمة firstdayofweek على العمليات الحسابية باستخدام رموز الفاصل w وww.
إذا كان date1 أو date2 تاريخًا حرفيًا، تصبح السنة المحددة جزءًا ثابتًا من التاريخ. ولكن إذا تم وضع التاريخ 1 أو التاريخ 2 بين علامتي اقتباس ( ) وتم حذف السنة، فسيتم إدراج السنة الحالية في كل مرة يتم فيها تقييم تعبير التاريخ 1 أو التاريخ 2 في التعليمات البرمجية. وهذا يجعل من الممكن كتابة كود البرنامج الذي يعمل لسنوات مختلفة.
عندما يكون الفاصل الزمني سنة (yyyy)، قارن 31 ديسمبر مع 1 يناير من العام التالي، على الرغم من أن الفرق هو في الواقع يوم واحد فقط، إلا أن DateDiff يُرجع 1 مما يشير إلى اختلاف قدره سنة واحدة.