SQL Server Native Client Conversions (OLE DB)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW)
In diesem Abschnitt wird die Konvertierung zwischen datetime- und datetimeoffset-Werten beschrieben. 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 jedoch nur zwischen Typen konvertiert wird, wenn Daten an oder vom Client übertragen werden, besteht keine Möglichkeit für eine Anwendung, SQL Server Native Client zu erzwingen, zwischen DBTYPE_DATE und Zeichenfolgenformaten zu konvertieren. Andernfalls verwenden Zeichenfolgen die folgenden Formate (Text in Klammern gibt ein optionales Element an):
Das Format der datetime- und datetimeoffset-Zeichenfolgen ist das folgende:
yyyy-mm-dd[ hh:mm:ss[.9999999][ ± hh:mm]]
Das Format für Uhrzeiten lautet wie folgt:
hh:mm:ss[.9999999]
Das Format von date-Zeichenfolgen ist das folgende:
yyyy-mm-dd
Hinweis
Frühere Versionen von SQL Server Native Client und SQLOLEDB haben OLE-Konvertierungen implementiert, falls Standardkonvertierungen fehlgeschlagen sind. Daher unterscheiden sich einige Konvertierungen, die von SQL Server Native Client 10.0 und höher ausgeführt werden, 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“ des Artikels Datentypunterstützung für Verbesserungen von Datum und Uhrzeit in OLE DB.
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 Datums-/Uhrzeitkonvertierungen zwischen einer Clientanwendung, die mit SQL Server Native Client OLE DB und SQL Server 2008 (10.0.x) (oder höher) geschrieben wurde.
Server/Client-Konvertierungen
Beschreibt Datums-/Uhrzeitkonvertierungen zwischen SQL Server 2008 (10.0.x) (oder höher) und einer Clientanwendung, die mit SQL Server Native Client OLE DB geschrieben wurde.