Question

Je dois déterminer si un ensemble de dates contient deux semaines différentes.

Par exemple:

Lors du retour d'un ensemble d'enregistrements à partir d'une base de données qui contient une date, il doit y avoir quelque chose de faire la distinction entre les différentes semaines.

<cfloop query="datesExample">

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

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

Pour moi, cela semble être toute la logique que je dois ajouter pour déterminer s'il y a une nouvelle semaine.

Bien, je ne reçois pas des résultats de cette.

Quelqu'un a une idée?

Mise à jour:

Ceci est mon véritable instruction if:

<cfif DayofWeek(lastShiftDate) NEQ DayOfWeek(Time_In) AND DateDiff("d",lastShiftDate, Time_In) GTE 7>
Était-ce utile?

La solution 6

Il était beaucoup plus simple que ce que je pensais. Tout ce que je devais faire était la valeur de la première date. Alors, <cfif query.RecordCount EQ 1><cfset firstDate = Now() /></cfif> puis faire un DATEDIFF () avec le lastShiftDate

Merci pour l'aide de tout le monde.

Autres conseils

Je QueryAddColumn d'ajouter une colonne supplémentaire sur la fin de votre requête, puis boucle à travers et définir le début de la semaine pour chaque enregistrement de la requête. Quelque chose comme ceci:

<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#">

Ensuite, lorsque vous utilisez le cfoutput, vous pouvez tout groupe par la colonne StartofWeek sans faire toute la logique conditionnelle loufoque.

Dan

lorsque le dayofweek de dateA est différent de celui dayofweek de dateB, et leur DateDiff est plus grand que 7?

Alors dateA et dateB sont différentes semaine?

Le code que vous avez présenté a plusieurs erreurs de syntaxe. Si vous l'avez copié à partir de votre source, vous pouvez essayer d'éteindre tout piégeage d'erreur qui vous empêche de voir les erreurs.

D'abord, pour répondre à la syntaxe: Votre cfif n'est pas fermée. DateFormat () prend deux arguments - l'objet de la date et le masque de date. Si ce n'est pas dans un bloc de cfoutput, vous allez afficher tout le littéral #OrginalDate #.

Pour répondre à la logique:

Je suppose OriginalDate est un champ dans le retour de la requête.

Je ne sais pas exactement ce que vous essayez de faire. Votre code imprimerait une ligne horizontale au lieu de la date à tout moment il y avait plus de 6 jours entre deux enregistrements. Cependant, vous ne serez jamais imprimer une ligne horizontale tant que les dates sont plus proches. Donc, si vous aviez jamais Lun / Mer / Ven dans la base de données, vous jamais un HR, parce que le datediff serait deux ou trois jours, sept jamais.

Il existe plusieurs approches pour faire face à cela. Si vous clarifiez votre but, nous pourrions être en mesure de vous aider à mieux. Par exemple, ce qui définit une nouvelle semaine? Sam / dim à minuit? Depuis la première date de la requête? Qu'est-ce que vous essayez d'afficher?

scroll top