Datum und Uhrzeit können auf eine der folgenden Arten an eine Datenbank gesendet werden:
Über jede Schnittstelle als Zeichenfolge
Über ODBC oder OLE DB als Binärwert (z.B. mit einer ODBC-TIMESTAMP_STRUCT-Struktur)
Über Embedded SQL als SQLDATETIME-Struktur
Datum und Uhrzeit mit Zeitzonen-Offset können nur als Zeichenfolge an die Datenbank gesendet werden.
Wenn ein Datum als Zeichenfolge (beim DATE-Datentyp) bzw. als Teil einer Zeichenfolge (bei den Datentypen TIMESTAMP und TIMESTAMP WITH TIME ZONE) an die Datenbank gesendet wird, kann die Zeichenfolge mit einer Reihe von verschiedenen Methoden angegeben werden, einschließlich derjenigen nach ISO 8601, einem internationalen Standard für die Darstellung von Datums- und Zeitangaben.
Ein Datum kann in einem der folgenden ISO 8601-Formate angegeben werden.
Kalenderdatum Das Kalenderdatumsformat lautet JJJJ-MM-TT, wobei JJJJ das Jahr im Gregorianischen Kalender ist, MM der Monat im Jahr zwischen 01 (Januar) und 12 (Dezember) und TT der Tag des Monats zwischen 01 und 31. Beispiel: "2010-04-01" stellt den ersten Tag des Monats April im Jahr 2010 dar. ISO 8601 erfordert nicht die Eingabe des Trennzeichens. Daher seht "20100401" ebenfalls für den ersten Tag des Monats April im Jahr 2010.
ISO-Kalenderdatum | Format | Beispiel |
---|---|---|
Grundlegend | JJJJMMTT | 20100401 |
Erweitert | YYYY-MM-DD | 2010-04-01 |
Wochendatum Ein weiteres ISO-Datumsformat ist das Wochendatum. Das Format lautet JJJJ-Www-T, wobei JJJJ das Jahr im Gregorianischen Kalender ist, W der Buchstabe W, ww ist die Woche des Jahres zwischen 01 (der ersten Woche) und 52 oder 53 (der letzten Woche) und T der Tag der Woche zwischen 1 (Montag) und 7 (Sonntag). Beispiel: "2010-W13-4" stellt den vierten Tag der dreizehnten Woche des Jahres 2010 dar (den 1. April 2010). ISO 8601 erfordert nicht die Eingabe des Trennzeichens. Daher stellt "2010W134" ebenfalls den vierten Tag der dreizehnten Woche des Jahres 2010 dar. Bei geringerer Genauigkeit kann eine Ziffer aus der Darstellung weggelassen werden. ('"2010W13" stellt den 29. März 2010 dar.)
ISO-Wochendatum | Format | Beispiel |
---|---|---|
Grundlegend | JJJJWwwT | 2010W134 |
Erweitert | JJJJ-Www-T | 2010-W13-4 |
Ordinaldatum Das letzte ISO-Datumsformat ist das Ordinaldatum. Das Format ist JJJJ-TTT, wobei JJJJ das Jahr im Gregorianischen Kalender ist und TTT die Ordinalzahl des Kalendertags innerhalb des Kalenderjahres. Beispiel: "2010-091" stellt den ersten Tag des Monats April im Jahr 2010 dar. ISO 8601 erfordert nicht die Eingabe des Trennzeichens. Beispiel: "2010091" stellt ebenfalls den 1. April 2010 dar. Das maximale Ordinaldatum ist 366 für Schaltjahre. Beispiel: "2008366" stellt den letzten Tag des Jahres 2008 dar (den 31. Dezember 2008).
ISO-Ordinaldatum | Format | Beispiel |
---|---|---|
Grundlegend | JJJJTTT | 2010091 |
Erweitert | JJJJ-TTT | 2010-091 |
Andere Datumsformate werden unterstützt. SQL Anywhere ist sehr flexibel in der Interpretation von Zeichenfolgen, die Datumsangaben enthalten. Im Falle von Mehrdeutigkeiten wird die Interpretation des Datumswerts von den Einstellungen für die Datenbankoptionen date_order und nearest_century gesteuert. Beispiel: Abhängig von der date_order-Einstellung kann "02/05/2002" vom Datenbankserver als 2. Mai (DMY), als 5. Februar (MDY) oder als unzulässiger Wert (YMD) interpretiert werden.
Die nearest_century-Einstellung legt fest, ob ein zweistelliger Jahreswert als Jahr im zwanzigsten oder einundzwanzigsten Jahrhundert interpretiert wird. Beispiel: Im Falle der Zeichenfolge "02/05/10" würde die date_order-Einstellung bestimmen, ob "02" oder "10" als Jahr interpretiert wird, und die nearest_century-Einstellung würde bestimmen, ob "02" das Jahr 1902 oder 2002 darstellt bzw. ob "10" das Jahr 1910 oder 2010 darstellt. Der Wert der Option nearest_century beeinflusst die Interpretation der zweistelligen Jahreszahlen: 2000 wird bei Werten unter nearest_century verwendet, 1900 bei allen anderen Werten. Der Standardwert für diese Option ist 50. Daher wird standardmäßig das Jahr 50 als 1950 interpretiert und das Jahr 49 als 2049.
Die folgende Tabelle zeigt, wie sich der erste Tag im April des Jahres 2010 angegeben werden kann, mit der jeweiligen Einstellung für date_order und der nearest_century-Einstellung 50.
date_order | Format | Beispiel |
---|---|---|
YMD | JJJJ/MM/TT | 2010/04/01 |
YMD | JJ/MM/TT | 10/04/01 |
MDY | MM/TT/JJJJ | 04/01/2010 |
MDY | MM/TT/JJ | 04/01/10 |
DMY | TT/MM/JJJJ | 01/04/2010 |
DMY | TT/MM/JJ | 01/04/10 |
Da ISO 8601-Formate nicht zweideutig sind und nicht durch die Einstellungen des Benutzers für date_order und nearest_century beeinflusst werden, ist ihre Verwendung empfehlenswert.
Daten können auch mit Monatsnamen angegeben werden. Beispiele dafür sind "2010 April 01", "April 1, 2010" und "1 April 2010". Wenn das Jahr zweideutig angegeben ist, wird die date_order-Option verwendet, um zu ermitteln, welcher Datumsteil das Jahr darstellt und welcher den Tag des Monats. Daher wird "01 April 10" als 10. April 2001 interpretiert, wenn die date_order-Option auf "YMD" gesetzt ist, oder als 1. April 2010, wenn die date_order-Option auf "DMY" gesetzt ist.
Das Jahr in einem Datum kann im Bereich von 0001 bis 9999 liegen. Das in SQL Anywhere minimal mögliche Datum ist 0001-01-01.
Wenn eine Zeichenfolge nur eine teilweise Datumsangabe enthält, werden Standardwerte benutzt, um den Datumswert aufzufüllen. Folgende Standardwerte werden benutzt:
year Das aktuelle Jahr wird verwendet, wenn kein Jahr angegeben ist (z.B. "April 1").
month Der aktuelle Monat wird verwendet, wenn weder Jahr noch Monat angegeben ist (z.B. "23:59:59"), oder 01, wenn ein Jahr angegeben ist (z.B. "2010").
day Der aktuelle Tag wird verwendet, wenn weder Jahr noch Monat angegeben ist (z.B. "23:59:59"), oder 01, wenn ein Monat angegeben ist (z.B. "April").
Im folgenden Beispiel wird der Datumswert aus dem aktuellen Datum erstellt.
SELECT CAST('23:59:59' AS TIMESTAMP) |
Die Tageszeit kann im ISO 8601-Format mit dem 24-Stunden-System angegeben werden. Sie lautet "hh:mm:ss", wobei hh die Anzahl der vollen Stunden seit Mitternacht ist, mm die Anzahl der vollen Minuten seit Beginn der Stunde und ss die Anzahl der vollen Sekunden seit Beginn der Minute. Beispiel: "23:59:59" stellt die Zeit eine Sekunde vor Mitternacht dar.
Der ISO 8601-Standard gestattet die Weglassung von Sekunden und Minuten. Beispiel: "23:59" stellt die Zeit sechzig Sekunden vor Mitternacht dar.
Der ISO 8601-Standard gestattet es Ihnen außerdem, eine Dezimalzahl in die Sekundeneinheit einzubeziehen. Sekundenbruchteile werden mit einem Komma (,) oder einem Punkt (.) angegeben. Der Sekundenbruchteil wird mit maximal sechs Dezimalstellen gespeichert. Beispiel: "23:59:59,500000" und "23:59:59.500000" stellen beide die Zeit eine halbe Sekunde vor Mitternacht dar. SQL Anywhere bietet keine Unterstützung für Minuten- oder Stundenbruchteile.
ISO 8601 erfordert nicht den Doppelpunkt als Trennzeichen, wenn die Uhrzeit in einer Datumsangabe enthalten ist. Beispiel: "235959" stellt die Zeit eine Sekunde vor Mitternacht dar.
Die maximale Uhrzeit ist "24:00:00". Dies stellt Mitternacht dar. In Kombination mit einem Datum stellt es entweder Mitternacht oder 00:00:00 des nächsten Tags dar. Beispiel: "2010-04-01 24:00:00" ist gleichwertig mit "2010-04-02 00:00:00".
ISO-Zeit | Format | Beispiel |
---|---|---|
Grundlegend (mit Datum) | hhmmss.ssssss | 20100401 235959.500000 |
Grundlegend (mit Datum) | hhmmss,ssssss | 20100401 235959,500000 |
Erweitert | hh:mm:ss.ssssss | 23:59:59.500000 |
Erweitert | hh:mm:ss,ssssss | 23:59:59,500000 |
Die Nicht-ISO-Bezeichner "AM" und "PM" werden ebenfalls unterstützt. Beispiel: "11:59:59 PM" ist gleichwertig mit "23:59:59".
AM/PM | Format | Beispiel |
---|---|---|
AM | hh:mm:ss.ssssss AM | 11:59:59.500000 AM |
AM | hh:mm:ss,ssssss AM | 11:59:59,500000 AM |
PM | hh:mm:ss.ssssss PM | 11:59:59.500000 PM |
PM | hh:mm:ss,ssssss PM | 11:59:59,500000 PM |
ISO 8601 ermöglicht es, Datum und Uhrzeit mit einem Leerzeichen oder dem Buchstaben T zu kombinieren. Beispiel: "2010-04-01 23:59:59" und "2010-04-01T23:59:59" stellen beide die Zeit eine Sekunde vor Mitternacht am ersten Tag des Monats April 2010 dar. Bindestrich und Doppelpunkt als Trennzeichen können weggelassen werden. Beispiel: "20100401T235959" stellt dasselbe Datum und dieselbe Uhrzeit dar.
SQL Anywhere unterstützt das Mischen von grundlegenden und erweiterten Datums- und Zeitformaten. Beispiel: "20100401T23:59:59" kombiniert das grundlegende und das erweiterte Format.
ISO 8601 bietet außerdem die Möglichkeit, einen Zeitzonen-Offset in eine Zeichenfolge mit Datum und Uhrzeit einzufügen. Das Format lautet:
Z (Zulu) Datum und Uhrzeit werden in der Coordinated Universal Time (UTC) angegeben. Beispiel: "2010-04-01 23:00:00Z" stellt 23:00 Uhr Coordinated Universal Time am ersten Tag des Monats April 2010 dar.
+hh:mm Datum und Uhrzeit liegen um die angegebene Anzahl von Stunden und Minuten vor der UTC. Beispiel: "2010-04-01 23:00:00+04:00" stellt 23:00 Uhr am ersten Tag des Monats April 2010 in einer Zeitzone 4 Stunden östlich der UTC dar.
-hh:mm Datum und Uhrzeit liegen um die angegebene Anzahl von Stunden und Minuten hinter der UTC. Beispiel: "2010-04-01 23:00:00-05:00" stellt 23:00 Uhr am ersten Tag des Monats April 2010 in einer Zeitzone 5 Stunden westlich der UTC dar.
Wenn die Minuten gleich 0 sind, müssen sie nicht im Zeitzonen-Offset angegeben werden. Außerdem kann dem Zeitzonen-Offset ein Leerzeichen vorangestellt werden. Beispiel: "2010-04-01 23:00:00 -03:30" stellt 23:00 Uhr am ersten Tag des Monats April 2010 in einer Zeitzone dreieinhalb Stunden westlich der UTC dar.
ISO-Zeitzone | Format | Beispiel |
---|---|---|
Grundlegend | Z | 20100401 235959Z |
Grundlegend | +hhmm | 20100401 235959+0400 |
Grundlegend | +hh | 20100401 235959+04 |
Grundlegend | -hhmm | 20100401 235959-0500 |
Grundlegend | -hh | 20100401 235959-05 |
Grundlegend | mit T, Sekundenbruchteil | 20100401T235959.50-0330 |
Erweitert | Z | 2010-04-01 23:59:59Z |
Erweitert | +hh:mm | 2010-04-01 23:59:59+04:00 |
Erweitert | -hh:mm | 2010-04-01 23:59:59-05:00 |
Erweitert | mit T, Sekundenbruchteil | 2010-04-01T23:59:59.50-03:30 |
SQL Anywhere unterstützt das Mischen von grundlegenden und erweiterten Datums-, Zeit- und Zeitzonenformaten. Beispiel: "20100401T23:59:59-05" kombiniert das grundlegende und das erweiterte Format.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |