Pregunta

necesito para determinar si un conjunto de fechas contiene dos semanas diferentes.

Por ejemplo:

Al devolver un conjunto de registros de una base de datos que contiene una fecha, es necesario que haya algo para distinguir entre las diferentes semanas.

<cfloop query="datesExample">

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

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

Para mí, esto parece como toda la lógica que había necesidad de añadir a determinar si existe una nueva semana.

A pesar de que ahora no recibo ningún resultado de esto.

Alguien tiene una idea?

Actualización:

Esta es mi verdadera sentencia if:

<cfif DayofWeek(lastShiftDate) NEQ DayOfWeek(Time_In) AND DateDiff("d",lastShiftDate, Time_In) GTE 7>
¿Fue útil?

Solución 6

Era mucho más sencillo de lo que pensaba. Todo lo que tenía que hacer era obtener el valor de la primera fecha. Así, <cfif query.RecordCount EQ 1><cfset firstDate = Now() /></cfif> y luego hacen un DateDiff () con el lastShiftDate

Gracias por la ayuda de todos.

Otros consejos

Me QueryAddColumn añadir una columna adicional en el extremo de la consulta, a continuación, recorrer y establecer el inicio de la semana para cada registro en la consulta. Algo como esto:

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

A continuación, cuando se utiliza el cfoutput, sólo puede agrupar por la columna de la StartofWeek sin hacer toda la lógica condicional tonta.

Dan

cuando el dayofweek de Dateâ es diferente que dayofweek de dateB y su DifFecha es mayor que 7?

A continuación, Dateâ y dateB están en la semana diferente?

El código que se presenta tiene varios errores de sintaxis. Si copiaste desde su fuente, es posible que trate de apagar cualquier interceptación de errores le impide ver los errores.

En primer lugar, para hacer frente a la sintaxis: Su cfif no está cerrada. DateFormat () toma dos argumentos - el objeto de fecha y fecha de la máscara. Si esto no es en un bloque cfoutput, vas a mostrar el #OrginalDate literal #.

Para hacer frente a la lógica:

Estoy asumiendo OriginalDate es un campo en el retorno de la consulta.

No estoy seguro exactamente lo que está tratando de hacer. Su código imprimiría una línea horizontal en lugar de la fecha en cualquier momento hubo más de 6 días entre dos registros. Sin embargo, nunca se va a imprimir una línea horizontal, siempre que las fechas están más juntos. Por lo tanto, si tuviera alguna Lunes / Miércoles / Viernes en la base de datos, usted nunca consigue un HR, debido a que el datediff sería de dos o tres días, nunca siete.

Existen varios enfoques para hacer frente a esto. Si a aclarar su propósito, que podría ser capaz de ayudarle mejor. Por ejemplo, lo que define una nueva semana? Sab / Dom a medianoche? Desde la primera fecha en la consulta? ¿Qué está tratando de mostrar?

Salida función del Semana : A partir de un objeto de fecha / hora, determina la semana número dentro del año.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top