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.
Signatur | Beschreibung |
---|---|
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ück | vor >> |