Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, was in den Implementierungsparameterdeskriptorfeldern (IPD) und implementierungszeilendeskriptor (IRD) für Datums- und Uhrzeitdatentypen zurückgegeben wird.
In IPD-Feldern zurückgegebene Informationen
Die folgenden Informationen werden in den IPD-Feldern zurückgegeben:
| Parametertyp | Datum | Zeit | smalldatetime | Datum/Uhrzeit | datetime2 | datetimeoffset |
|---|---|---|---|---|---|---|
| SQL_DESC_CASE_SENSITIVE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_CONCISE_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_DATETIME_INTERVAL_CODE | SQL_CODE_DATE | 0 | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | 0 |
| SQL_DESC_DATETIME_INTERVAL_PRECISION | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_FIXED_PREC_SCALE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_LENGTH | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_OCTET_LENGTH | 6 | 12 | 4 | 8 | 16 | 20 |
| SQL_DESC_PRECISION | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_SCALE | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_TYPE | SQL_TYPE_DATE | SQL_SS_TYPE_TIME2 | SQL_DATETIME | SQL_DATETIME | SQL_DATETIME | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_TYPE_NAME | date |
time |
smalldatetime in IRD, datetime2 in IPD |
datetime in IRD, datetime2 in IPD |
datetime2 |
datetimeoffset |
| SQL_CA_SS_VARIANT_TYPE | SQL_C_TYPE_DATE | SQL_C_TYPE_BINARY | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_TIMESTAMP | SQL_C_TYPE_BINARY |
| SQL_CA_SS_VARIANT_SQL_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
| SQL_CA_SS_SERVER_TYPE | Nicht verfügbar | Nicht verfügbar | SQL_SS_TYPE_SMALLDATETIME | SQL_SS_TYPE_DATETIME | SQL_SS_TYPE_DEFAULT | Nicht verfügbar |
Manchmal gibt es Diskontitäten in Wertbereichen. Beispielsweise fehlt 9 in 8.10..16. Der Grund dafür ist das Hinzufügen eines Dezimaltrennzeichens, wenn die Genauigkeit von Bruchteilen größer als 0 (NULL) ist.
datetime2 wird als Typname für smalldatetime und datetime da der Treiber dies als gängiger Typ für die Übertragung aller SQL_TYPE_TIMESTAMP Werte an den Server verwendet.
SQL_CA_SS_VARIANT_SQL_TYPE ist ein neues Deskriptorfeld. Dieses Feld wurde der IRD und IPD hinzugefügt, um Anwendungen die Angabe des Werttyps zu ermöglichen, der Spalten und Parameter (SQL_SSVARIANT) zugeordnet sqlvariant ist.
SQL_CA_SS_SERVER_TYPE ist ein neues nur IPD-Feld, mit dem Anwendungen steuern können, wie Werte für Parameter, die als SQL_TYPE_TYPETIMESTAMP gebunden sind (oder als SQL_SS_VARIANT mit einem C-Typ von SQL_C_TYPE_TIMESTAMP) an den Server gesendet werden. Wenn SQL_DESC_CONCISE_TYPE SQL_TYPE_TIMESTAMP ist (oder SQL_SS_VARIANT ist und der C-Typ SQL_C_TYPE_TIMESTAMP ist), wenn SQLExecute oder SQLExecDirect aufgerufen wird, bestimmt der Wert von SQL_CA_SS_SERVER_TYPE den Tabellarischen Datenstromtyp (TDS) des Parameterwerts wie folgt:
| Wert von SQL_CA_SS_SERVER_TYPE | Gültige Werte für SQL_DESC_PRECISION | Gültige Werte für SQL_DESC_LENGTH | TDS-Typ |
|---|---|---|---|
| SQL_SS_TYPE_DEFAULT | 0..7 | 19, 21..27 | datetime2 |
| SQL_SS_TYPE_SMALLDATETIME | 0 | 19 | smalldatetime |
| SQL_SS_TYPE_DATETIME | 3 | 23 | datetime |
Die Standardeinstellung von SQL_CA_SS_SERVER_TYPE ist SQL_SS_TYPE_DEFAULT. Die Einstellungen von SQL_DESC_PRECISION und SQL_DESC_LENGTH werden mit der Einstellung SQL_CA_SS_SERVER_TYPE überprüft, wie in der obigen Tabelle beschrieben. Wenn diese Überprüfung fehlschlägt, wird SQL_ERROR zurückgegeben, und ein Diagnosedatensatz wird mit SQLState 07006 und der Meldung "Verletzung des Eingeschränkten Datentypattributs" protokolliert. Dieser Fehler wird auch zurückgegeben, wenn SQL_CA_SS_SERVER_TYPE auf einen anderen Wert als SQL_SS_TYPE DEFAULT festgelegt ist und DESC_CONCISE_TYPE nicht SQL_TYPE_TIMESTAMP ist. Diese Überprüfungen werden ausgeführt, wenn die Überprüfung der Deskriptorkonsistenz erfolgt, z. B.:
Wenn SQL_DESC_DATA_PTR geändert wird.
Zur Vorbereitung oder Ausführungszeit (wenn SQLExecute, SQLExecDirect, SQLSetPos oder SQLBulkOperations aufgerufen wird).
Wenn eine Anwendung eine nicht verzögerte Vorbereitung durch Aufrufen von SQLPrepare mit deaktivierter verzögerter Vorbereitung oder durch Aufrufen von SQLNumResultCols, SQLDescribeCols oder SQLDescribeParam für eine vorbereitete, aber nicht ausgeführte Anweisung erzwingt.
Wenn SQL_CA_SS_SERVER_TYPE durch einen Aufruf von SQLSetDescField festgelegt wird, muss der Wert SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME oder SQL_SS_TYPE_DATETIME sein. Wenn dies nicht der Fall ist, wird SQL_ERROR zurückgegeben, und ein Diagnosedatensatz wird mit SQLState HY092 und der Meldung "Ungültiger Attribut-/Optionsbezeichner" protokolliert.
Das SQL_CA_SS_SERVER_TYPE-Attribut kann von Anwendungen verwendet werden, die von der von datetime und smalldatetime, aber nicht datetime2unterstützten Funktionalität abhängig sind. Erfordert z. B datetime2 . die Verwendung der dateadd Funktionen und datumsdiifen Funktionen, während datetimesmalldatetime arithmetische Operatoren ebenfalls zulässig sind. Die meisten Anwendungen müssen dieses Attribut nicht verwenden, und die Verwendung sollte vermieden werden.
In IRD-Feldern zurückgegebene Informationen
Die folgenden Informationen werden in den IRD-Feldern zurückgegeben:
| Spaltenart | Datum | Zeit | smalldatetime | Datum/Uhrzeit | datetime2 | datetimeoffset |
|---|---|---|---|---|---|---|
| SQL_DESC_AUTO_UNIQUE_VALUE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_CASE_SENSITIVE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_CONCISE_TYPE | SQL_TYPE_DATE | SQL_SS_TIME2 | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_DATETIME_INTERVAL_CODE | SQL_CODE_DATE | 0 | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | SQL_CODE_TIMESTAMP | 0 |
| SQL_DESC_DATETIME_INTERVAL_PRECISION | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_DISPLAY_SIZE | 10 | 8,10..16 | 16 | 23 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_FIXED_PREC_SCALE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE | SQL_FALSE |
| SQL_DESC_LENGTH | 10 | 8,10..16 | 16 | 2 | 19, 21..27 | 26, 28..34 |
| SQL_DESC_LITERAL_PREFIX | ' | ' | ' | ' | ' | ' |
| SQL_DESC_LITERAL_SUFFIX | ' | ' | ' | ' | ' | ' |
| SQL_DESC_LOCAL_TYPE_NAME | date |
time |
smalldatetime |
datetime |
datetime2 |
datetimeoffset |
| SQL_DESC_OCTET_LENGTH | 6 | 12 | 4 | 8 | 16 | 20 |
| SQL_DESC_PRECISION | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_SCALE | 0 | 0..7 | 0 | 3 | 0..7 | 0..7 |
| SQL_DESC_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE | SQL_PRED_SEARCHABLE |
| SQL_DESC_TYPE | SQL_DATETIME | SQL_SS_TIME2 | SQL_DATETIME | SQL_DATETIME | SQL_DATETIME | SQL_SS_TIMESTAMPOFFSET |
| SQL_DESC_TYPE_NAME | date |
time |
smalldatetime |
datetime |
datetime2 |
datetimeoffset |
| SQL_DESC_UNSIGNED | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE | SQL_TRUE |