سؤال

أحتاج إلى تحديد ما إذا كانت مجموعة من التواريخ تحتوي على أسبوعين مختلفين.

علي سبيل المثال:

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

<cfloop query="datesExample">

   <cfif DateDiff("d",DateFormat(lastDate),DateFormat(OriginalDate)) GTE 7>
       <hr />
   </cfif>
   <p>#OrginalDate#</p>

   <cfset lastDate = DateFormat(OrginalDate) />
</cfloop>

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

على الرغم من أنني لا أحصل على أي نتائج من هذا.

أي شخص لديه أفكار؟

تحديث:

هذا هو بلدي الفعلية إذا كان البيان:

<cfif DayofWeek(lastShiftDate) NEQ DayOfWeek(Time_In) AND DateDiff("d",lastShiftDate, Time_In) GTE 7>
هل كانت مفيدة؟

المحلول 6

كان أكثر بساطة أكثر من ما اعتقدت. كل ما كان علي فعله هو الحصول على قيمة التاريخ الأول. لذا، <cfif query.RecordCount EQ 1><cfset firstDate = Now() /></cfif> ثم القيام datateiff () مع lastshiftdate

شكرا لمساعدات الجميع.

نصائح أخرى

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

<cfset datesExample = QueryNew("lastshiftdate", "date") />
<cfset QueryAddRow(datesExample) />
<cfset QuerySetCell(datesExample, "lastshiftdate", "2009-01-15") />
<cfset QueryAddRow(datesExample) />
<cfset QuerySetCell(datesExample, "lastshiftdate", "2009-01-20") />
<cfset QueryAddColumn(datesExample, "StartofWeek", "time", ArrayNew(1)) />
<cfloop query="datesExample">
    <cfset QuerySetCell(datesExample, "StartofWeek", DateAdd("d", -(DayOfWeek(lastshiftdate) - 1), lastshiftdate), CurrentRow) />
</cfloop>

<cfdump var="#datesExample#">

ثم عند استخدام cfoutput، يمكنك فقط Group عن طريق عمود StartOfweeek دون القيام بكل منطق الأجيلى المشرف.

دان

عندما يختلف Dayofweek of Datea عن Dayofweek of DateB، فإن Datediff أكبر من 7؟

ثم Datea و DateB في أسبوع مختلف؟

يحتوي الرمز الذي قدمته العديد من أخطاء بناء الجملة. إذا قمت بنسخها من مصدرك، فقد تحاول إيقاف تشغيل أي محاصرة خطأ هو إبقائك من رؤية الأخطاء.

أولا، لمعالجة بناء الجملة: CFIF الخاص بك غير مغلق. DateFormat () يأخذ حجدا - كائن التاريخ وقناع التاريخ. إذا لم يكن هذا في كتلة CFOUTPUT، فستظهر فقط # OrginalDate الحرفي #.

لمعالجة المنطق:

أنا أفترض الأصلي هو حقل في عودة الاستعلام.

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

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

تفحص ال أسبوع وظيفة: من كائن التاريخ / الوقت، يحدد رقم الأسبوع في غضون العام.

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