Freigeben über


Bindungen und Konvertierungen (OLE DB)

In diesem Abschnitt wird erläutert, wie zwischen datetime- und datetimeoffset-Werten konvertiert wird. Die in diesem Abschnitt beschriebenen Konvertierungen werden entweder von OLE DB bereitgestellt oder sind eine konsistente Erweiterung von OLE DB.

Das Format für Literale und Zeichenfolgen für Datums- und Zeitangaben in OLE DB entspricht normalerweise ISO und hängt nicht von der Gebietsschemaeinstellung des Clients ab. Eine Ausnahme ist DBTYPE_DATE, wo der Standard OLE-Automatisierung ist. Da SQL Server Native Client allerdings nur zwischen Typen konvertiert, wenn Daten vom oder zum Client übertragen werden, kann eine Anwendung SQL Server Native Client nicht dazu zwingen, zwischen DBTYPE_DATE und Zeichenfolgenformaten zu konvertieren. Andernfalls verwenden Zeichenfolgen die folgenden Formate (Text in Klammern gibt ein optionales Element an):

  • Das Format von datetime- und datetimeoffset-Zeichenfolgen ist:

    yyyy-mm-dd[ hh:mm:ss[.9999999][ ± hh:mm]]

  • Das Format von time-Zeichenfolgen ist:

    hh:mm:ss[.9999999]

  • Das Format von date-Zeichenfolgen ist:

    yyyy-mm-dd

HinweisHinweis

Frühere Versionen von SQL Server Native Client und SQLOLEDB haben OLE-Konvertierungen implementiert, falls Standardkonvertierungen fehlgeschlagen sind. Als Ergebnis unterscheiden sich einige von SQL Server Native Client 10.0 ausgeführte Konvertierungen von der OLE DB-Spezifikation.

Konvertierungen von Zeichenfolgen ermöglichen Flexibilität bei Leerstellen- und Feldbreite. Weitere Informationen finden Sie im Abschnitt "Datenformate: Zeichenfolgen und Literale" in Datentypunterstützung für OLE DB-Datum-/Uhrzeit-Verbesserungen.

Folgende sind allgemeine Konvertierungsregeln:

  • Wenn eine Zeichenfolge in einen date/time-Typ konvertiert wird, wird die Zeichenfolge zuerst als ISO-Literal analysiert. Wenn dies fehlschlägt, wird die Zeichenfolge als OLE-Datumsliteral analysiert, das über Zeitkomponenten verfügt.

  • Wenn keine Zeit vorhanden ist, der Empfänger aber Zeit speichern kann, wird die Zeit auf 0 (null) festgelegt. Wenn kein Datum vorhanden ist, der Empfänger aber ein Datum speichern kann, wird das Datum auf das aktuelle Datum festgelegt, wenn ISO-Konvertierungen verwendet werden, und auf den 30.12.1899, wenn OLE-Konvertierungen verwendet werden.

  • Wenn im vom Client verwendeten Datentyp keine Zeitzone vorhanden ist, der Server aber eine Zeitzone speichern kann, wird angenommen, dass sich die Daten auf dem Client in der Clientzeitzone befinden.

  • Wenn auf dem Server keine Zeitzone vorhanden ist, der Client aber über Zeitzoneninformationen verfügt, wird die UTC-Zeitzone angenommen. Dieses Verhalten unterscheidet sich vom Serververhalten.

  • Wenn die Zeit vorhanden ist, der Empfänger aber keine Zeit speichern kann, wird die Zeitkomponente ignoriert.

  • Wenn das Datum vorhanden ist, der Empfänger aber kein Datum speichern kann, wird die Datumskomponente ignoriert.

  • Wenn beim Konvertieren vom Client zum Server ein Abschneiden der Sekunden oder Sekundenbruchteile auftritt, wird DB_E_ERRORSOCCURRED zurückgegeben, und als Status wird DBSTATUS_E_DATAOVERFLOW festgelegt.

  • Wenn beim Konvertieren von Server zu Client ein Abschneiden der Sekunden oder Sekundenbruchteile auftritt, wird DBSTATUS_S_TRUNCATED festgelegt

In diesem Abschnitt

  • Client-/Server-Konvertierungen
    Beschreibt date/time-Konvertierungen, die für eine Clientanwendung durchgeführt werden, die mit SQL Server Native Client OLE DB und SQL Server 2008 (oder höher) geschrieben wurde.

  • Server/Client-Konvertierungen
    Beschreibt date/time-Konvertierungen, die zwischen SQL Server 2008 (oder höher) und einer Clientanwendung durchgeführt werden, die mit SQL Server Native Client OLE DB geschrieben wurde.