سؤال
أنا أدير استعلامًا بسيطًا لـ 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')
هذا يستغرق التاريخ الثاني - التاريخ الأول. لا تنسى ' '.
لا تنتمي إلى StackOverflow