سؤال

لدي موعد ، افترض اليوم تاريخ

declare @d datetime
set @d = '20101014'

احتاج

select @d - <six month>

أين هو العدد الحقيقي للأيام التي تحتوي على ستة أشهر الماضية ، بدءًا من D.

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

المحلول

يمكنك استخدام DATEADD:

select DATEADD(month, -6, @d)

تعديل: إذا كنت بحاجة إلى عدد الأيام التي تصل إلى 6 أشهر ، فيمكنك استخدامها DATEDIFF:

select DATEDIFF(day, @d, DATEADD(month, -6, @d))

نصائح أخرى

تحقق أيضًا من هذا الأمر (تطوير هذا الموضوع):

أحتاج إلى اختيار Galgorythm اعتمادًا على الحالة - إذا كان هناك عدة أيام بين تاريخين كما في 6 أشهر (منذ آخر تاريخ).

لقد فعلت ذلك بهذه الطريقة:

    case
      when
        DATEDIFF(day, DATEADD(month, -6, @pDateEnd), @pDateEnd)
        >
        DATEDIFF(day, @pDateBegin, @pDateEnd)
      then 'there is no 6-month difference between two dates'
      else 'there is 6-month difference ore more between two dates'
    end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top