2

XQuery を使用して SharePoint からデータを抽出しています。xquery コードは次のとおりです。

{for $ancestor0 in $queryresponse//*:row
return<Row>
<Title>{fn:data($ancestor0/@ows_Title)}</Title>
<EventDate>{fn:data($ancestor0/@ows_EventDate)}</EventDate>

返されるデータは次のとおりです。

<h1>Meeting Agenda  Event Date</h1>
New England APCD Work Group 6/26/2013  
NY APD Workgroup    6/27/2013  
MCDB 2012 Data Submission Bi-weekly 7/2/2013  
MA APCD 7/3/2013  
VA APCD Monthly Status  7/4/2013  
Cross State Meeting 7/5/2013  
NY APD Workgroup    7/11/2013  
MA APCD 7/17/2013  
Cross State Meeting 7/19/2013  
NY APD Workgroup    7/25/2013  
MA APCD 7/31/2013  
New England APCD Work Group 7/31/2013  
VA APCD Monthly Status  8/1/2013  
Cross State Meeting 8/2/2013

現在の週にある行を取得する必要がありますか? したがって、結果として次の行のみを取得します。

MA APCD 7/17/2013  
Cross State Meeting 7/19/2013

誰かがコードで私を助けることができますか?

4

1 に答える 1

1

最後に、2 つの問題を解決する必要があります。1 つはこれらの日付を解析することであり、もう 1 つはそれらが現在の週にあるかどうかを検証することです。

日付が同じ週にあるかどうかのテスト

ある日が現在の週にあるかどうかのテストは、その日が特定の日の同じ週にあるかどうか、つまり現在の曜日にあるかどうかの特殊なケースにすぎません。

declare function local:in-current-week($date as xs:date)
as xs:boolean
{
  local:in-same-week(current-date(), $date)
};

ある日が特定の週に含まれているかどうかをテストするには、週の始まりと終わりを見つける必要があります。曜日がわかっていれば、週の始まりを見つけるのは簡単です。これを見つけるには、既知の週の始まり (1912 年 6 月 23 日の日曜日を任意に選択) からの日数を数え、残りを 1 週間の長さで割った値を使用します。

週を月曜日から始めたい場合は、日付を 1 に変更してください。1938 年 1 月 10 日にします。

declare function local:in-same-week($date1 as xs:date, $date2 as xs:date)
as xs:boolean
{

  let $dayOfMonth := abs(($date1 - xs:date('1912-06-23')) div xs:dayTimeDuration('P1D') mod 7)
  let $startOfWeek := $date1 - $dayOfMonth * xs:dayTimeDuration('P1D')
  let $endOfWeek := $startOfWeek + 7 * xs:dayTimeDuration('P1D')
  return $startOfWeek <= $date2 and $date2 < $endOfWeek
};

local:in-current-week(xs:date('2013-07-17'))

From xs:dateUS 日付形式の作成

これには、単純な正規表現以上のものは含まれません (すべての日付 AC で有効です)。

xs:date(replace('07/10/2013', '(\d{1,2})/(\d{1,2})/(\d+)', '$3-$1-$2'))

where最後に、次の句をクエリに追加してフィルタリングできます。

where local:in-current-week(xs:date(replace(@ows_Title, '(\d{1,2})/(\d{1,2})/(\d{4})', '$3-$1-$2')))
于 2013-07-19T12:47:17.630 に答える