DATETIME-Werte formatieren und ihre Syntax analysieren

In diesem Abschnitt erfahren Sie, wie Sie das dateTime-Format mithilfe einer Zeichenfolge von Musterbuchstaben festlegen.

Bei der Umwandlung eines Datums oder einer Uhrzeit in eine Zeichenfolge muss ein Formatmuster angewendet werden, über das die Umwandlung gesteuert wird. Verwenden Sie dieses Formatmuster entweder für die Umwandlung eines Datums oder einer Uhrzeit in eine Zeichenfolge oder für die Auswertung einer Zeichenfolge zur Umwandlung in ein Datum oder eine Uhrzeit.

Während der Konvertierung (z. B. eines Datum/Zeit-Formats in eine Zeichenfolge) wird ein Muster oder eine Gruppe von Tokens durch die entsprechende Quelle ersetzt. Aus dem nachfolgenden Diagramm geht hervor, wie ein Muster zum Formatieren einer Datum/Zeit-Quelle verwendet wird, um eine Zeichenfolgeausgabe zu erzeugen.

Dieses Diagramm zeigt die Ausgabezeichenfolge, die sich aus einer Datum/Zeit-Quelle und einem Formatmuster ergibt.

Beim Auswerten einer Zeichenfolge (z. B. bei der Umwandlung der Zeichenfolge in ein Datum/Zeit-Format) wird das Muster oder die Gruppe von Tokens verwendet, um zu ermitteln, welcher Teil des Datum/Zeit-Zielformats durch welchen Teil der Zeichenfolge dargestellt wird. Im folgenden Diagramm wird gezeigt, wie das funktioniert.

Dieses Diagramm zeigt die Datum/Zeit-Ausgabe, die sich aus einer Zeichenfolgedatenquelle und einem Formatmuster ergibt.

Syntax

Das Ausdrucksmuster wird wie folgt definiert:

Dabei gilt:
Symbol
ist ein Zeichen im Zeichensatz adDeEFGhHIkKmMsSTUwWyYzZ.
Zeichenfolge
ist eine Zeichenfolge in einfachen Anführungszeichen. Wenn innerhalb der Zeichenfolge ein einfaches Anführungszeichen erforderlich ist, verwenden Sie zwei einfache Anführungszeichen (").

Zeichen zum Formatieren eines Datum/Zeit-Formats als eine Zeichenfolge

In der folgenden Tabelle sind die Zeichen aufgelistet, die in einem Muster zur Formatierung bzw. Auswertung von Zeichenfolgen für ein Datum/Zeit-Format verwendet werden können. Nach der Tabelle folgen einige Anmerkungen, die weitere Informationen zu den Beispielen in der Tabelle enthalten.

Symbol Bedeutung Darstellung Beispiele
a Kennzeichnung für Vormittag (AM) oder Nachmittag (PM) Text Eingabe: am, AM, pm, PM. Ausgabe: AM oder PM
d Tag in Monat (1-31) Zahl 1, 20
dd Tag in Monat (01-31) Zahl 01, 31
D Tag in Jahr (1-366) Zahl 3, 80, 100
DD Tag in Jahr (01-366) Zahl 03, 80, 366
DDD Tag in Jahr (001-366) Zahl 003
e Tag in Woche (1-7)1 Nummer 2
EEE Tag in Woche1 Text Di
EEEE Tag in Woche1 Text Dienstag
F Wochentag in Monat (1-5)2 Zahl 2
G Jahrhundert Text v. Chr oder n. Chr
h Stunde in AM oder PM (1-12) Zahl 6
hh Stunde in AM oder PM (01-12) Zahl 06
H Stunde des Tages im 24-Stunden-Format (0-23)3 Zahl 7
HH Stunde des Tages im 24-Stunden-Format (00-23)3 Zahl 07
I ISO8601 Datum/Zeit (bis jjjj-MM-tt'T'HH:mm:ss.SSSZZZ)4 Text 2006-10-07T12:06:56.568+01:00
IU ISO8601 Datum/Zeit (ähnlich wie I, aber ZZZ mit Ausgabe "Z", wenn die Zeitzone +00:00 ist)4 Text 2006-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z
k Stunde des Tages im 24-Stunden-Format (1-24)3 Zahl 8
k Stunde des Tages im 24-Stunden-Format (01-24)3 Zahl 08
K Stunde in AM oder PM (0-11) Zahl 9
KK Stunde in AM oder PM (00-11) Zahl 09
m Minute Zahl 4
mm Minute Zahl 04
M Monatszahl Zahl 5, 12
MM Monatszahl Zahl 05, 12
MMM Monatsname Text Jan, Feb
MMMM Monatsname Text Januar, Februar
s Sekunden Zahl 5
ss Sekunden Zahl 05
S Dezisekunde5 Zahl 7
SS Hundertstelsekunde5 Zahl 70
SSS Millisekunde5 Zahl 700
SSSS 0,0001 Sekunde5 Zahl 7000
SSSSS 0,00001 Sekunde5 Zahl 70000
SSSSSS 0,000001 Sekunde5 Zahl 700000
T ISO8601 Uhrzeit (bis HH:mm:ss.SSSZZZ)4 Text 12:06:56.568+01:00
TU ISO8601 Uhrzeit (ähnlich wie T, aber Zeitzone +00:00 wird durch 'Z' ersetzt)4 Text 12:06:56.568+01:00, 15:42:12.000Z
w Woche in Jahr6 Zahl 7, 53
ww Woche in Jahr6 Zahl 07, 53
W Woche in Monat7 Zahl 2
yy Jahr8 Zahl 06
yyyy Jahr8 Zahl 2006
YY Jahr: nur mit Woche in Jahr verwenden6 Zahl 06
YYYY Jahr: nur mit Woche in Jahr verwenden6 Zahl 2006
zzz Zeitzone (abgekürzter Name) Text GMT
zzzz Zeitzone (vollständiger Name) Text Greenwich Mean Time
Z Zeitzone (+/-n) Text +3
ZZ Zeitzone (+/-nn) Text +03
ZZZ Zeitzone (+/-nn:nn) Text +03:00
ZZZU Zeitzone (wie ZZZ, "+00:00" wird durch "Z" ersetzt) Text +03:00, Z
ZZZZ Zeitzone (GMT+/-nn:nn) Text GMT+03:00
ZZZZZ Zeitzone (wie ZZZ, aber ohne Doppelpunkt) (+/-nnnn) Text +0300
' Auslassung für Text   'Benutzertext'
" (zwei einfache Anführungszeichen) einfaches Anführungszeichen in Text mit Escapezeichen   'o"clock'

Die Darstellung des Datum/Zeit-Objekts richtet sich danach, welche Symbole Sie festlegen.

Anmerkungen: Die folgenden Anmerkungen beziehen sich auf die obige Tabelle.
  1. Im Feld Tag in Woche können folgende Werte angegeben werden:
    • 1 - Sonntag
    • 2 - Montag
    • 3 - Dienstag
    • 4 - Mittwoch
    • 5 - Donnerstag
    • 6 - Freitag
    • 7 - Samstag
  2. Der 12. Juli 2006 ist der zweite Mittwoch im Juli und kann als 2006 Juli Mittwoch 2 unter Verwendung der Formatierzeichenfolge yyyy MMMM EEEE F angegeben werden. Beachten Sie, dass dieses Format nicht für den Mittwoch in der zweiten Woche im Juli 2006 stehnt, denn das ist der 5. Juli 2006; die Formatierzeichenfolge hierfür ist yyyy MMMM EEEE W.
  3. 24-Stunden-Felder können zu einer mehrdeutigen Zeitangabe führen, wenn es zu Konflikten mit einem Feld im Format 'am/pm' kommt.
  4. Weitere Informationen hierzu finden Sie unter ISO8601, Datum/Zeit-Tokens I und T.
  5. Sekundenbruchteile werden durch ein S in Großbuchstaben dargestellt. Die Länge muss implizit der Anzahl der Formatsymbole bei der Eingabe entsprechen. Die Formatierzeichenfolge ss SSS oder ss.SSS steht beispielsweise für Sekunden und Millisekunden. Die Formatierzeichenfolge ss.sss steht jedoch für ein Wiederholungsfeld (Sekunden); der Wert nach dem Punkt (.) wird als Sekundenfeld ausgewertet, nicht als Sekundenbruchteile. Die Ausgabe wird auf die angegebene Länge abgeschnitten.
  6. In ESQL wird davon ausgegangen, dass der erste Tag im Jahr in der ersten Woche ist. Der 1. Januar ist also in Woche 1. Dies kann dazu führen, das eine Datumsangabe, die relativ zu einem Jahr gemacht werden, ein Datum in einem anderen Jahr ist. Beispielsweise ergibt die syntaktische Analyse von "Montag Woche 1 2005" unter Verwendung von "EEEE' Woche 'w' 'YYYY" das Datum 2004-12-27, da der Montag der ersten Woche des Jahres 2005 tatsächlich ein Datum im Jahr 2004 ist.

    Wenn Sie das y-Symbol verwenden, wird keine Anpassung ausgeführt. Für Daten um das Jahresende herum könnten unvorhersehbare Ergebnisse auftreten. Die Zeichenfolge "2005 01 Montag" ist beispielsweise wie folgt formatiert:

    • Der Montag in der Woche 1 des Jahres 2005 unter Verwendung der Formatierzeichenfolge "YYYY ww EEEE" wird korrekt als 27. Dezember 2004 interpretiert
    • Der Montag in der Woche 1 des Jahres 2005 unter Verwendung der Formatierzeichenfolge "yyyy ww EEEE" wird fälschlicherweise als 27. Dezember 2005 interpretiert.
  7. Die erste und letzte Woche in einem Monat können Tage aus den angrenzenden Monaten enthalten. Montag 31. Juli 2006 kann beispielsweise als Montag in Woche eins im August 2006 ausgedrückt werden. Dies wäre 2006 08 1 Montag mit der Formatierzeichenfolge yyyy MM W EEEE.
  8. Jahr wird als Sonderfall behandelt.
    • Wenn die Anzahl von y bei der Ausgabe 2 lautet, wird das Jahr auf zwei Ziffern gekürzt. Beispiel: yyyy ergibt 1997, yy ergibt 97.
    • Bei der Eingabe ist für zweistellige Jahresangaben das Jahrhundertfenster auf 53 festgelegt. Beispielsweise ergibt die Eingabe von 52 den Jahreswert 2052, während 53 das Ausgabejahr 1953, und 97 das Jahr 1997 ergibt.

ISO8601, Datum/Zeit-Tokens I und T

Wenn Ihre Werte für Datum/Zeit dem ISO8601:2000-Standard zur 'Darstellung von Datum und Uhrzeit' entsprechen, sollten Sie die Verwendung der Formatierungssymbole I und T in Erwägung ziehen, die der folgenden Teilmenge des ISO8601-Standards entsprechen.

Verwenden Sie die Formatierungssymbole I und T nur eigenständig:

Die folgende Tabelle zeigt, wie sich das Ausgabeformat auf den logischen Datentyp bezieht.

Logischer Modelldatentyp ESQL-Datentyp Ausgabeformat
xsd:dateTime TIMESTAMP oder GMTTIMESTAMP jjjj-MM-tt'T'HH:mm:ss.SSSZZZ
xsd:date DATE jjjj-MM-tt
xsd:gYear INTERVAL yyyy
xsd:gYearMonth INTERVAL jjjj-MM
xsd:gMonth INTERVAL --MM
xsd:gmonthDay INTERVAL --MM-dd
xsd:gDay INTERVAL ---dd
xsd:time TIME / GMTTIME 'T'HH:mm:ss.SSSZZZ
Anmerkung:
  • Bei der Eingabe akzeptieren I und T sowohl '+00:00' als auch 'Z' zur Anzeige eines Zeitunterschieds von null zur Coordinated Universal Time (UTC), generieren bei der Ausgabe aber stets '+00:00'. Wenn bei der Ausgabe immer 'Z' generiert werden soll, verwenden Sie stattdessen die Formatierungssymbole 'IU' oder 'TU'.
  • ZZZ ergibt stets die Ausgabe von '+00:00', um einen Zeitunterschied von null zur Coordinated Universal Time (UTC) anzuzeigen. Wenn bei der Ausgabe immer 'Z' generiert werden soll, verwenden Sie stattdessen ZZZU.

UTC-Eingabeformat für die Ausgabe verwenden

Ein Element oder Attribut des logischen Typs xsd:dateTime oder xsd:time, das eine Datum/Zeit-Angabe als Zeichenfolge enthält, kann die UTC-Zeit (Coordinated Universal Time) angeben, indem entweder das Symbol Z oder Zeitzone +00:00 verwendet wird. Bei der Eingabe erkennt der MRM-Parser das UTC-Format solcher Elemente und Attribute. Bei der Ausgabe können Sie über die Eigenschaft Standardformat für Datum/Zeit verwenden des Elements oder Attributs angeben, ob Z oder +00:00 angezeigt wird. Alternativ können Sie das UTC-Eingabeformat beibehalten, indem Sie die Nachrichtengruppeneigenschaft Benutzen Sie das UTC-Format der Eingabe für die Ausgabe auswählen. Wenn diese Eigenschaft ausgewählt ist, wird das UTC-Format unverändert in die Ausgabenachricht übernommen und überschreibt das durch die Datum/Zeit-Formateigenschaft implizierte Format.

Sommerzeit und CAST-Funktion

Wenn der Broker in einer anderen Zeitzone als GMT (Greenwich Mean Time, Westeuropäische Zeit) ausgeführt wird, berechnet er den Sommerzeit-Ausgleich auf Basis der an ihn durch die CAST-Funktion übergebenen Zeiten. Damit der Ausgleich von CAST richtig berechnet wird, muss der an CAST übergebenen Zeit eine Zeitzone als Z-Parameter übergeben werden. Wenn dem übergebenen Wert keine Zeitzone zugeordnet ist, wird die Zeit in GMT-Zeit konvertiert; sie wird nicht als lokale Zeitmarke behandelt.

Wenn Sie außerdem mit CAST eine Zeichenfolge in einen Zeitwert umsetzen, wird der DST-Ausgleich mit dem aktuellen Systemdatum berechnet. Wenn Sie eine Zeichenfolge in eine Zeitvariable umsetzen und die Sommerzeit für ein bestimmtes Datum berechnen möchten, müssen Sie auch das Datum angeben.

Beispiel: Bei timeValue='10:00:00' konvertiert der folgende Code, der auf einem Broker mit der CDT-Zeitzone ausgeführt wird, die Zeit in GMT-Zeit, da keine Zeitzonen-ID angegeben ist:
DECLARE castTime TIME;
SET castTime = CAST (timeValue AS TIME FORMAT timePattern)
Die Zeit wird nicht erneut in GMT konvertiert, wenn die castTime-Variable in einem nachfolgenden Code verwendet wird. Beispiel:
CAST(castDate, castTime AS GMTTIMESTAMP);

Beispiele

Die folgende Tabelle enthält Beispiele für Datum/Zeit-Formate.

Formatmuster Ergebnis
"yyyy.MM.dd 'um' HH:mm:ss ZZZ" 2006.07.10 um 15:08:56 -05:00
"EEE, MMM d, "yy" Mit, Juli 10, '06
"h:mm a" 8:08 PM
"hh Uhr" a, ZZZZ" 09 Uhr AM, GMT+09:00
"K:mm a, ZZZ" 9:34 AM, -05:00
"yyyy.MMMMM.dd hh:mm aaa" 1996.Juli.10 12:08 PM
Zugehörige Konzepte
Nachrichten modellieren
Das Nachrichtenmodell
Zugehörige Tasks
Nachrichtenmodelle entwickeln
Mit Nachrichtendefinitionsdateien arbeiten
Mit Nachrichtenmodellobjekten arbeiten
Zugehörige Verweise
Nachrichtenmodellverweisinformationen
Eigenschaften von Nachrichtenmodellobjekten
CAST-Funktion
Zahlen als Zeichenfolge formatieren und ihre Syntax analysieren
Unterstützte Umsetzungen
Implizite Umsetzungen
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:29:30

ak05616_