الدالة DateDiff

ينطبق على
Access لـ Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

إرجاع متغير (طويل) يحدد عدد الفواصل الزمنية بين تاريخين.

بناء الجملة

DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])

تحتوي الدالة DateDiff على هذه الوسيطات:

الوسيطة الوصف
interval مطلوبة. تعبير السلسلة الذي هو الفاصل الزمني الذي تستخدمه لحساب الفرق بين date1 و date2.
date1, date2 مطلوبة. متغير (تاريخ). تاريخان تريد استخدامهما في الحساب.
firstdayofweek اختيارية. ثابت يحدد اليوم الأول من الأسبوع. إذا لم تحدده، فمن المفترض أن يكون يوم الأحد.
firstweekofyear اختيارية. ثابت يحدد الأسبوع الأول من السنة. إذا لم تحدده، فإن الأسبوع الأول هو الأسبوع الذي يقع فيه 1 يناير.

الإعدادات

تحتوي الوسيطة interval على هذه الإعدادات:

الإعداد الوصف
yyyy السنة
q ربع السنة
m الشهر
y يوم من السنة
d اليوم
w Weekday
ww الأسبوع
h Hour
n Minute
s Second

تحتوي الوسيطة firstdayofweek على هذه الإعدادات:

ثابت القيمة الوصف
vbUseSystem 0 يستخدم إعداد واجهة برمجة تطبيقات NLS.
vbSunday 1 الأحد (افتراضي)
vbMonday 2 الاثنين
vbTuesday 3 الثلاثاء
vbWednesday 4 الأربعاء
vbThursday 5 الخميس
vbFriday 6 الجمعة
vbSaturday 7 السبت
ثابت القيمة الوصف
vbUseSystem 0 يستخدم إعداد واجهة برمجة تطبيقات NLS.
vbFirstJan1 1 يبدأ بالأسبوع الذي يحدث فيه 1 يناير (افتراضي).
vbFirstFourDays 2 يبدأ بالأسبوع الأول الذي يحتوي على أربعة أيام على الأقل في السنة الجديدة.
vbFirstFullWeek 3 يبدأ بالأسبوع الكامل الأول من السنة.

ملاحظات

يمكنك استخدام الدالة DateDiff لتحديد عدد الفواصل الزمنية المحددة الموجودة بين تاريخين. على سبيل المثال، قد تستخدم DateDiff لحساب عدد الأيام بين تاريخين أو عدد الأسابيع بين اليوم ونهاية السنة.

لحساب عدد الأيام بين date1 و date2، يمكنك استخدام إما يوم من السنة ("y") أو يوم ("d"). عندما interval يكون Weekday ("w"DateDiff ترجع عدد الأسابيع بين التاريخين. إذا date1 وقع يوم الاثنين، DateDiff يحسب عدد أيام الاثنين حتى date2. فإنه يحسب date2 ولكن ليس date1. إذا كان interval الأسبوع ("ww")، فإن الدالة DateDiff ترجع عدد أسابيع التقويم بين التاريخين. تحسب عدد أيام الأحد بين date1 و date2. DateDiff تحسب date2 إذا كانت تقع في يوم أحد، ولكنها لا تحسب date1، حتى لو وقعت في يوم الأحد.

إذا كانت date1 تشير إلى نقطة زمنية لاحقة من date2، ترجع الدالة DateDiff رقما سالبا.

تؤثر الوسيطة firstdayofweek على الحسابات التي تستخدم "w" رموز الفاصل الزمني و "ww" .

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

عند مقارنة 31 ديسمبر ب 1 يناير من العام التالي، DateDiff ترجع السنة ("yyyy") 1 على الرغم من مرور يوم واحد فقط.

ملاحظة

بالنسبة إلى date1 و date2، إذا كان إعداد الخاصية Calendar ميلاديا، يجب أن يكون التاريخ المقدم ميلاديا. إذا كان التقويم هجريا، فيجب أن يكون التاريخ المقدم هو التاريخ الهجري.

أمثلة استعلام DateDiff

التعبير النتائج
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; إرجاع الفرق، بالسنوات، بين التاريخ 01/01/2010 والقيم في DateofSale الحقل.
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; إرجاع الفرق، في أرباع السنة استنادا إلى السنة التقويمية، بين تاريخ النظام و DateofSale، وعرضه في DaysSinceSale العمود.
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; إرجاع الفرق، بالأيام، بين تاريخ النظام و DateofSale، وعرضه في DaysSinceSale العمود.
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; إرجاع الفرق، بالأيام، بين تاريخ النظام و DateofSale، وعرضه في DaysSinceSale العمود.
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; إرجاع الفرق، في أيام الأسبوع، بين تاريخ النظام و DateofSale، وعرضه في DaysSinceSale العمود. إذا DateofSale وقع يوم الاثنين، DateDiff يحسب عدد أيام الاثنين حتى تاريخ النظام. تحسب تاريخ النظام ولكن ليس DateofSale القيمة.
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; إرجاع الفرق، في أسابيع التقويم، بين تاريخ النظام و DateofSale، وعرضه في DaysSinceSale العمود. تحسب عدد أيام الأحد بين DateofSale وتاريخ النظام. يحسب تاريخ النظام إذا كان يقع يوم الأحد، ولكنه لا يحسب DateofSale، حتى لو كان يقع يوم الأحد.
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; إرجاع الفرق، بالساعات، بين تاريخ النظام و DateTime، وعرضه في DaysSinceSale العمود.
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; إرجاع الفرق، بالدقائق، بين تاريخ النظام و DateTime، وعرضه في DaysSinceSale العمود.
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; ترجع الفرق، بالثوان، بين تاريخ النظام و DateTime، وتعرضه في DaysSinceSale العمود.

استخدام الدالة DateDiff في تعبير

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

بافتراض أن شحن أي أمر يستغرق عشرة أيام، قم بتعيين الخاصية Control Source لمربع النص كما يلي:

=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10

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

استخدام الدالة DateDiff في التعليمات البرمجية ل VBA

يستخدم هذا المثال الدالة DateDiff لعرض عدد الأيام بين تاريخ معين واليوم.

Dim TheDate As Date  ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg

اطلع أيضاً على

اختر دالة التاريخ المناسبة