سؤال

أنا أدير استعلامًا بسيطًا لـ Datediff لكن لا يبدو أنه يحسب الأيام بشكل صحيح أو أقوم بشيء خاطئ.

إذا ركضت

PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01)
RETURN 19

ايهم صحيح. إذا قمت بتغيير الشهر في التاريخ الأول إلى فبراير (02) أحصل على شيء غريب.

PRINT DATEDIFF(Day, 2010-02-20, 2010-01-01)
RETURN 20

الآن لا ينبغي أن يكون 48 أو شيء من هذا القبيل؟

هل يمكن لأي شخص أن يرى ما أفعله خطأ أم أن هذه هي الوظيفة الصحيحة التي يجب استخدامها إذا أردت أيامًا بين هذه التواريخ؟

لقد حاولت اتخاذ موعد واحد من الآخر:

PRINT (2010-02-20) - (2010-01-01)
RETURN -20

أي مساعدة موضع تقدير كبير.

شكرا J.

هل كانت مفيدة؟

المحلول

أنت في عداد المفقودين اقتباسات

PRINT DATEDIFF(Day, '2010-01-01', '2010-02-20')

أنت تحصل على 20 لأن

2010 - 1 - 1 = 2008
2010 - 2 - 20 = 1988

2008 - 1988 = 20

نصائح أخرى

إذا قمت بتشغيله بهذه الطريقة:

SELECT  2010-02-20, 2010-01-01

سوف ترى

1988  2008

ما هي النتائج أو عمليات عدد صحيح تضعها هنا.

أرفق ثوابت التاريخ في اقتباسات واحدة:

SELECT  DATEDIFF(Day, '2010-02-20', '2010-01-01')

--
-50

إنه يعمل إذا كنت تحيط تواريخك مع علقات الافتراضات -

SELECT DATEDIFF(day, '2010-02-20', '2010-01-10')

-41
PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20') 

هذا يستغرق التاريخ الثاني - التاريخ الأول. لا تنسى ' '.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top