Domanda

Ho bisogno di determinare se un insieme di date contiene due diverse settimane.

Ad esempio:

Quando si restituisce un insieme di record da un database che contiene la data, ci deve essere qualcosa di distinguere tra le diverse settimane.

<cfloop query="datesExample">

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

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

Per me, questo sembra come tutta la logica che avevo bisogno di aggiungere per determinare se v'è una nuova settimana.

Anche se, non sto ottenendo alcun risultato da questo.

Qualcuno ha un idea?

Aggiornamento:

Questa è la mia attuale if:

<cfif DayofWeek(lastShiftDate) NEQ DayOfWeek(Time_In) AND DateDiff("d",lastShiftDate, Time_In) GTE 7>
È stato utile?

Soluzione 6

E 'stato molto più semplice di quello che pensavo. Tutto quello che dovevo fare era ottenere il valore della prima data. Così, <cfif query.RecordCount EQ 1><cfset firstDate = Now() /></cfif> e poi fare un dateDiff () con il lastShiftDate

Grazie per l'aiuto di tutti.

Altri suggerimenti

Vorrei QueryAddColumn di aggiungere una colonna aggiuntiva sulla fine della tua ricerca, quindi scorrere e impostare l'inizio della settimana per ogni record nella query. Qualcosa di simile a questo:

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

Poi, quando si utilizza il cfoutput, si può solo gruppo dalla colonna StartofWeek senza fare tutta la logica condizionale goofy.

Dan

quando il DAYOFWEEK di dateA è diverso da quello di dayofweek dateB, e la loro DateDiff è più grande di 7?

Poi dateA e dateB sono in settimana diverso?

Il codice è presentato ha diversi errori di sintassi. Se è stata copiata dalla sorgente, si potrebbe provare a disattivare qualsiasi intercettazione degli errori ti impedisce di vedere gli errori.

In primo luogo, per affrontare la sintassi: Il tuo cfif non è chiuso. DateFormat () accetta due argomenti - l'oggetto data e la maschera data. Se questo non è in un blocco cfoutput, ti basta visualizzare il letterale #OrginalDate #.

Per affrontare la logica:

Sto assumendo OriginalDate è un campo nel ritorno query.

Non sono sicuro esattamente quello che stai cercando di fare. Il tuo codice sarebbe stampare una linea orizzontale al posto della data in qualsiasi momento vi era più di 6 giorni tra due record. Tuttavia, non si sarà mai di stampare una linea orizzontale il più a lungo sono più vicini alle date. Quindi, se avete avuto mai lun / mer / ven nel database, non si sarebbe mai ottenere un HR, perché il datediff sarebbe due o tre giorni, mai sette.

Ci sono diversi approcci per affrontare questo. Se a chiarire il vostro scopo, potremmo essere in grado di aiutare meglio. Ad esempio, ciò che definisce una nuova settimana? Sab / Dom a mezzanotte? Dal momento che la prima data nella query? Cosa stai cercando di visualizzare?

Controlla la funzione Settimana : Da un oggetto data / ora, determina la settimana il numero entro l'anno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top