ترجع متغيرا (طويلا) يحدد عدد الفواصل الزمنية بين تاريخين.
بناء الجملة
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 API. |
vbSunday |
1 | الأحد (افتراضي) |
vbMonday |
2 | الاثنين |
vbTuesday |
3 | الثلاثاء |
vbWednesday |
4 | الأربعاء |
vbThursday |
5 | الخميس |
vbFriday |
6 | الجمعة |
vbSaturday |
7 | السبت |
| ثابت | قيمة | الوصف |
|---|---|---|
vbUseSystem |
0 | يستخدم إعداد NLS API. |
vbFirstJan1 |
1 | يبدأ بالأسبوع الذي يبدأ فيه 1 يناير (افتراضي). |
vbFirstFourDays |
2 | يبدأ بالأسبوع الأول الذي يحتوي على أربعة أيام على الأقل في السنة الجديدة. |
vbFirstFullWeek |
3 | يبدأ بأول أسبوع كامل من السنة. |
ملاحظات
يمكنك استخدام الدالة DateDiff لتحديد عدد الفواصل الزمنية المحددة الموجودة بين تاريخين. على سبيل المثال، يمكنك استخدامها DateDiff لحساب عدد الأيام بين تاريخين أو عدد الأسابيع بين اليوم ونهاية السنة.
لحساب عدد الأيام بين date1 و date2، يمكنك استخدام إما يوم من السنة ("y") أو يوم ("d"). WHEN interval IS WEEKDAY ("w")، ترجع DateDiff عدد الأسابيع بين التاريخين. إذا date1 كان يقع يوم الاثنين، DateDiff يتم حساب عدد أيام الاثنين حتى.date2 إنه مهم date2 ولكن ليس date1. أما إذا كان interval الأسبوع ("ww")، DateDiff فترجع الدالة عدد أسابيع التقويم بين تاريخين. يحسب عدد أيام الأحد بين date1 و date2.
DateDiff يحتسب date2 إذا وقع يوم الأحد ، لكنه لا يحسب date1، حتى لو وقع يوم الأحد.
إذا date1 كانت تشير إلى نقطة زمنية لاحقة من date2، ترجع DateDiff الدالة رقما سالبا.
تؤثر الوسيطة firstdayofweek على العمليات الحسابية التي تستخدم رموز الفاصل الزمني "w" AND "ww" .
إذا date1 كان التاريخ حرفيا أو date2 إذا كان تاريخا حرفيا، تصبح السنة المحددة جزءا دائما من ذلك التاريخ. ومع ذلك، إذا date1 كانت OR date2 محاطة بعلامتي اقتباس مزدوجتين (" ")، وحذفت السنة، فسيتم إدراج السنة الحالية في تعليماتك البرمجية في كل مرة يتم فيها تقييم التعبير أو date1date2 . هذا يجعل من الممكن كتابة التعليمات البرمجية التي يمكنك استخدامها في سنوات مختلفة.
عند مقارنة 31 ديسمبر بالأول من يناير من العام التالي، DateDiff ترجع القيمة 1 للسنة"yyyy" () على الرغم من مرور يوم واحد فقط.
ملاحظة
بالنسبة 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