xs:duration
データ・タイプ xs:duration は、グレゴリオの年、月、日、時間、分、および 秒のコンポーネントによって表現される期間を表します。 xs:duration は、データ・タイプ xs:anyAtomicType から派生しています。
このデータ・タイプによって表現可能な範囲は -P83333333333333Y3M11574074074DT1H46M39.999999999999S から P83333333333333Y3M11574074074DT1H46M39.999999999999S まで (つまり -999999999999999 カ月と 999999999999999.999999999999 秒から 999999999999999 カ月と 999999999999999.999999999999 秒まで) です。
xs:duration の字句形式は ISO 8601 拡張形式で PnYnMnDTnHnMnSです。 以下の省略形は、拡張フォーマットを説明しています。
- P
- 期間指定子。
- nY
- n は年数を示す符号なしの整数です。
- nM
- n は月数を示す符号なしの整数です。
- nD
- n は日数を示す符号なしの整数です。
- T
- 日時の分離文字。
- nH
- n は時間数を示す符号なしの整数です。
- nM
- n は分数を示す符号なしの整数です。
- nS
- n は秒数を示す符号なしの 10 進数です。 小数点が表示される場合、小数秒を示す 1 から 12 桁の数字が小数点の後に必要です。
例えば、次の形式は、1 年と 2 カ月 3 日 10 時間 30 分の期間を示します。
P1Y2M3DT10H30M以下の形式は、マイナス 120 日間を示します。-P120D先行するオプションの負符号 (-) は、負の期間を示します。 符号を省略すると、正の期間と認識されます。
この形式の精度を低減し、表記を切り捨てることが可能ですが、 以下の要件に準拠する必要があります。
- 式の年数、月数、日数、時間数、分数、または秒数がゼロである場合、数値とそれに対応する指定子は省略できます。 ただし、最低 1 個の数値および指定子が存在する必要があります。
- 2 番目の部分には、小数部を使用できます。
- 時間項目を 1 つも指定しない場合に限っては、指定子
Tが存在しない必要があります。 - 指定子
Pは常に必要です。
例えば、以下の形式は使用可能です。
P1347Y
P1347M
P1Y2MT2H
P0Y1347M
P0Y1347M0DP1Y2MT の形式は、時間項目がないため、使用できません。 形式 P-1347M は使用できませんが、
形式 -P1347M は使用できます。
Db2 データベース・システムでは、正規形で xs:duration 値を保管します。 正規化された形式では、構成要素の秒と分は 60 より小さく、時間は 24 より小さく、月は 12 より小さくなります。 Db2 60秒の倍数を1分に、60分の倍数を1時間に、24時間の倍数を1日に、12か月の倍数を1年に変換します。 例えば、次の XQuery 式では、2 カ月と 63 日と 55 時間 91 分の duration を指定するコンストラクター関数を呼び出します。
xs:duration("P2M63DT55H91M")Db2 は 55 時間を 2 日と 7 時間に変換し、91 分を 1 時間と 31 分に変換します。 この式は、正規化された期間値 P2M65DT8H31M を戻します。