1

一連の日付に2つの異なる週が含まれているかどうかを判断する必要があります。

例えば:

日付を含むデータベースから一連のレコードを返す場合、異なる週を区別するための何かが必要です。

<cfloop query="datesExample">

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

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

私には、これは新しい週があるかどうかを判断するために追加する必要があるすべてのロジックのように思えます。

しかし、私はこれから何の結果も得ていません。

誰かアイデアがありますか?

アップデート:

これは私の実際のifステートメントです。

<cfif DayofWeek(lastShiftDate) NEQ DayOfWeek(Time_In) AND DateDiff("d",lastShiftDate, Time_In) GTE 7>
4

6 に答える 6

1

QueryAddColumnを使用してクエリの最後に列を追加し、ループしてクエリの各レコードの週の始まりを設定します。このようなもの:

<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を使用すると、間抜けな条件付きロジックをすべて実行せずに、StartofWeek列でグループ化することができます。

ダン

于 2009-09-24T19:19:38.057 に答える
0

dateAの曜日がdateBの曜日と異なり、そのDateDiffが7より大きい場合はどうなりますか?

それでは、dateAとdateBは異なる週にありますか?

于 2009-09-24T18:28:06.493 に答える
0

提示したコードには、いくつかの構文エラーがあります。ソースからコピーした場合は、エラートラップによってエラーが表示されないようにするために、オフにしてみてください。

まず、構文に対処します。cfifは閉じられていません。DateFormat()は、日付オブジェクトと日付マスクの2つの引数を取ります。これがcfoutputブロックにない場合は、リテラル#OrginalDate#を表示するだけです。

ロジックに対処するには:

OriginalDateがクエリリターンのフィールドであると想定しています。

あなたが何をしようとしているのか正確にはわかりません。2つのレコードの間に6日以上ある場合は常に、コードは日付の代わりに水平線を出力します。ただし、日付が近い限り、水平線を印刷することはありません。したがって、データベースに月/水/金があった場合、datediffは2日または3日であり、7日ではないため、HRを取得することはありません。

これに対処するためのいくつかのアプローチがあります。あなたがあなたの目的を明確にすれば、私たちはあなたをより良く助けることができるかもしれません。たとえば、新しい週を定義するものは何ですか?土/日深夜?クエリの最初の日付から?何を表示しようとしていますか?

于 2009-09-24T18:48:41.190 に答える
0

曜日機能をチェックしてください

于 2009-09-24T19:17:49.403 に答える
0

関数を確認します。日付/時刻オブジェクトから、年内の週番号を決定します。

于 2009-09-25T00:25:09.477 に答える
0

思ったよりずっと簡単でした。私がしなければならなかったのは、最初のデートの価値を手に入れることだけでした。したがって、<cfif query.RecordCount EQ 1><cfset firstDate = Now() /></cfif>lastShiftDateを使用してdateDiff()を実行します

みんなの助けてくれてありがとう。

于 2009-10-06T16:12:51.553 に答える