xqueryで前週の日(mon-sun)を取得することは可能ですか?
1485 次
2 に答える
2
たまたま純粋なXPath2.0式である別の解決策:
for $vSunday in xs:date('2012-07-08'),
$thisWeekDay in
abs((current-date() - $vSunday) div xs:dayTimeDuration('P1D'))
mod 7 +1,
$lastWeekSunday in
current-date() - xs:dayTimeDuration(concat('P',$thisWeekDay+7,'D')),
$i in 1 to 7,
$d in $lastWeekSunday + xs:dayTimeDuration(concat('P', $i, 'D'))
return
(concat(year-from-date($d),
'-', month-from-date($d),
'-', day-from-date($d)),
('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')
[$i],
'
')
今日(2012-07-08)実行すると、結果は次のようになります。
2012-7-1 Sunday
2012-7-2 Monday
2012-7-3 Tuesday
2012-7-4 Wednesday
2012-7-5 Thursday
2012-7-6 Friday
2012-7-7 Saturday
于 2012-07-08T18:16:44.440 に答える
0
FunctX XQuery Libraryをご覧ください。これらは、いくつかの追加の日付関数の概要と追加の日付関数を提供します。
このパターンを使用して、たとえば。7日前の日付を計算します。
fn:current-date() - xs:dayTimeDuration('P7D')
FunctX'day-of-week()
は、日付の曜日を計算するのに役立ちます。
FunctXライブラリ全体を解析すると、クエリが非常に遅くなる可能性があるため(XQueryエンジンによって異なります)、必要なコードのみをコピーすることもできます。
このコードは、過去7日間の曜日を返します(先週はピリオドと見なされます)。コードには、Guntherfunctx:day-of-week
がコメントで説明した修正が含まれています。
declare namespace functx = "http://www.functx.com";
declare function functx:day-of-week
( $date as xs:anyAtomicType? ) as xs:integer? {
if (empty($date))
then ()
else xs:integer((xs:date($date) - adjust-date-to-timezone(xs:date('1901-01-06'), timezone-from-date(xs:date($date)))
div xs:dayTimeDuration('P1D')) mod 7
} ;
for $day in 1 to 7
let $date := fn:current-date() - xs:dayTimeDuration(concat('P', 8-$day, 'D'))
return <day date="{ $date }">{ functx:day-of-week($date) }</day>
これがあなたが探しているものと正確に一致しない場合(あなたが考えたコード、入力と期待される出力を常に質問に含めてください)、あなたはあなたのニーズに合うようにそれを変更できると確信しています。
于 2012-07-08T16:55:36.413 に答える