• +49-(0)721-402485-12
Ihre Experten für XML, XQuery und XML-Datenbanken

Analyse von Zeitangaben

Zeitangaben können durch eine Ansammlung von Funktionen in einzelne Bestandteile zerlegt werden. Die Extraktion von Komponenten mit Bezug auf die unterschiedlichen Granulate von Zeitangaben findet sich – in komprimierter Form – in folgender Tabelle aufgelistet.

SignaturBeschreibung
fn:get-{years|
months}-
from-yearMonthDuration(

$arg as xdt:yearMonthDuration?)
as xs:integer?
liefert
· Jahr- bzw.
· Monatskomponente einer Zeitangabe
vom Typ xdt:yearMonthDuration
fn:get-{days|
hours|
minutes}-
from-dayTimeDuration(

$arg as xdt:dayTimeDuration?)
as xs:integer?
fn:get-seconds-from-dayTimeDuration(
$arg as xdt:dayTimeDuration?)
as xs:decimal?
liefert
· Tages-,
· Stunden-,
· Minuten oder
· Sekundenanteil
einer Zeitangabe vom Typ
xdt:dayTimeDuration
fn:get-{year|
month|
day|
hours|
minutes}-from-dateTime(

$arg as xs:dateTime?)
as xs:integer?
fn:get-seconds-from-dateTime(
$arg as xs:dateTime?)
as xs:decimal?
liefert Komponenten einer Zeitangabe
vom Typ xs:dateTime für:
· Jahr
· Monat
· Tag
· Stunden
· Minuten
· Sekunden
fn:get-{year|month|day}-from-date(
$arg as xs:date?)
as xs:integer?
liefert Komponenten einer Datumsangabe
(xs:date) für:
· Jahr
· Monat
· Tag
fn:get-{hours|
minutes}-from-time(

$arg as xs:time?)
as xs:integer?
fn:get-seconds-from-time(
$arg as xs:time?)
as xs:decimal?
liefert Komponenten einer Uhrzeitangabe
(xs:time) für:
· Stunden
· Minuten
· Sekunden

Tab. Funktionen zur Anaylse von Zeitangaben

Die Semantik der einzelnen Funktionen ist dabei durch das Bezeichnungsschema im Wesentlichen vorgegeben. So liefert der Ausdruck

fn:get-day-from-date("2004-01-08")

den Wert 8 vom Datentyp xs:integer. Alle diese Funktionen liefern Werte vom Datentyp xs:integer mit Ausnahme der Funktionen, die den Sekundenanteil ermitteln und – bedingt durch eine über Sekunden hinausgehende Zeitauflösung – in einem Wert vom Datentyp xs:decimal resultieren, d. h.,

fn:get-seconds-from-time("11:35:02.2523")

liefert als Beispiel den Wert 2.523 vom Typ xs:decimal. Unterstützt werden in summa die fünf Datentypen zur Verwaltung von Zeitangaben, wobei die noch nicht in einem Beispiel referenzierten Datentypen im folgenden Beispiel Verwendung finden:

let $ymd := xdt:yearMonthDuration("P8Y10M")
let $dtd := xdt:dayTimeDuration("P2DT8H30M12.5S")
let $dt := xs:dateTime("2004-01-08T11:40:25.1-05:00")
return (
<JahrUndMonat>
{ fn:get-years-from-yearMonthDuration($ymd)," Jahre und ",
fn:get-months-from-yearMonthDuration($ymd)," Monate" }
</JahrUndMonat>,
<TagUndUhrzeit>
{ fn:get-days-from-dayTimeDuration($dtd)," Tage und ",
fn:get-hours-from-dayTimeDuration($dtd)," Stunden und ",
fn:get-minutes-from-dayTimeDuration($dtd)," Minuten und ",
fn:get-seconds-from-dayTimeDuration($dtd)," Sekunden " }
</TagUndUhrzeit>,
<DatumUndUhrzeit>
{ "Tag ", fn:get-day-from-dateTime($dt)," im Monat ",
fn:get-month-from-dateTime($dt)," des Jahres ",
fn:get-year-from-dateTime($dt)," zur Stunde ",
fn:get-hours-from-dateTime($dt)," und ",
fn:get-minutes-from-dateTime($dt)," Minuten und ",
fn:get-seconds-from-dateTime($dt)," Sekunden " }
</DatumUndUhrzeit>)

Diese Extraktion von Komponenten unterschiedlicher Zeitangaben resultiert in folgendem XML-Fragment:

<JahrUndMonat>
8 Jahre und 10 Monate
</JahrUndMonat>
<TagUndUhrzeit>
2 Tage und 8 Stunden und 30 Minuten und 12.5 Sekunden
</TagUndUhrzeit>
<DatumUndUhrzeit>
Tag 8 im Monat 1 des Jahres 2004 zur Stunde 11 und 40 Minuten
und 25.1 Sekunden
</DatumUndUhrzeit>

 

Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)

<< zurückvor >>