Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique décrit les conversions de date/heure effectuées entre SQL Server 2008 (ou version ultérieure) et une application cliente écrite avec SQL Server Native Client OLE DB.
Transformations
Le tableau suivant décrit les conversions entre le type retourné au client et le type dans la liaison. Pour les paramètres de sortie, si ICommandWithParameters ::SetParameterInfo a été appelé et que le type spécifié dans pwszDataSourceType ne correspond pas au type réel sur le serveur, une conversion implicite est effectuée par le serveur, et le type retourné au client correspond au type spécifié via ICommandWithParameters ::SetParameterInfo. Cela peut entraîner des résultats de conversion inattendus lorsque les règles de conversion du serveur sont différentes de celles décrites dans cette rubrique. Par exemple, lorsqu’une date par défaut doit être fournie, SQL Server utilise 1900-1-1 plutôt que 1899-12-30.
| À-> De |
DATE | DBDATE | DBTIME | DBTIME2 | DBTIMESTAMP | DBTIMESTAMPOFFSET | FILETIME | OCTETS | VARIANTE | SSVARIANT | BSTR | STR | WSTR |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Date | 1,7 | Ok | - | - | 1 | 1,3 | 1,7 | - | OK (VT_BSTR) | Ok | Ok | 4 | 4 |
| Heure | 5,6,7 | - | 9 | Ok | 6 | 3,6 | 5,6 | - | OK (VT_BSTR) | Ok | Ok | 4 | 4 |
| Smalldatetime | 7 | 8 | 9,10 | 10 | Ok | 3 | 7 | - | 7 (VT_DATE) | Ok | Ok | 4 | 4 |
| Date et Heure | 5,7 | 8 | 9,10 | 10 | Ok | 3 | 7 | - | 7 (VT_DATE) | Ok | Ok | 4 | 4 |
| Datetime2 | 5,7 | 8 | 9,10 | 10 | 7 | 3 | 5,7 | - | OK (VT_BSTR) | Ok | Ok | 4 | 4 |
| Datetimeoffset | 5,7,11 | 8,11 | 9,10,11 | 10,11 | 7,11 | Ok | 5,7,11 | - | OK (VT_BSTR) | Ok | Ok | 4 | 4 |
| Char, Varchar, Nchar, Nvarchar |
7, 13 | 12 | 12,9 | 12 | 12 | 12 | 7,13 | N/A | N/A | N/A | N/A | N/A | N/A |
| Sql_variant (datetime) |
7 | 8 | 9,10 | 10 | Ok | 3 | 7 | - | 7(VT_DATE) | Ok | Ok | 4 | 4 |
| Sql_variant (smalldatetime) |
7 | 8 | 9,10 | 10 | Ok | 3 | 7 | - | 7(VT_DATE) | Ok | Ok | 4 | 4 |
| Sql_variant (date) |
1,7 | Ok | 2 | 2 | 1 | 1,3 | 1,7 | - | OK(VT_BSTR) | Ok | Ok | 4 | 4 |
| Sql_variant (heure) |
5,6,7 | 2 | 6 | Ok | 6 | 3,6 | 5,6 | - | OK(VT_BSTR) | Ok | Ok | 4 | 4 |
| Sql_variant (datetime2) |
5,7 | 8 | 9,10 | 10 | Ok | 3 | 5,7 | - | OK(VT_BSTR) | Ok | Ok | 4 | 4 |
| Sql_variant (datetimeoffset) |
5,7,11 | 8,11 | 9,10,11 | 10,11 | 7,11 | Ok | 5,7,11 | - | OK(VT_BSTR) | Ok | Ok | 4 | 4 |
Liste des symboles
| Symbole | Sens |
|---|---|
| Ok | Aucune conversion n’est nécessaire. |
| - | Aucune conversion n'est prise en charge. Si la liaison est validée lorsque IAccessor ::CreateAccessor est appelé, DBBINDSTATUS_UPSUPPORTEDCONVERSION est retournée dans rgStatus. Lorsque la validation de l’accesseur est différée, DBSTATUS_E_BADACCESSOR est définie. |
| 1 | Les champs de temps sont définis sur zéro. |
| 2 | DBSTATUS_E_CANTCONVERTVALUE est définie. |
| 3 | Le fuseau horaire est défini sur zéro. |
| 4 | Si la mémoire tampon du client n’est pas suffisamment grande, DBSTATUS_S_TRUNCATED est définie. Lorsque le type de serveur inclut des fractions de secondes, le nombre de chiffres dans la chaîne de résultat correspond exactement à l’échelle du type de serveur. |
| 5 | La troncation de secondes ou de fractions de secondes est ignorée. |
| 6 | La date est définie sur la date actuelle, sauf si la source est un littéral d’heure de chaîne et que la destination est DBTYPE_DATE. Dans ce cas, 1899-12-30 est utilisé. |
| 7 | Si la valeur dépasse, DBSTATUS_E_DATAOVERFLOW est définie. |
| 8 | Les champs d’heure sont ignorés. |
| 9 | Les champs fractionnaires en secondes sont ignorés. |
| 10 | Le composant date est ignoré. |
| 11 | L’heure est convertie en fuseau horaire du client. Si une erreur se produit pendant cette DBSTATUS_E_DATAOVERFLOW de conversion est définie. |
| 12 | La chaîne est analysée en tant que littéral ISO et convertie en type cible. Si cela échoue, la chaîne est analysée en tant que littéral de date OLE (qui a également des composants d’heure) et convertie d’une date OLE (DBTYPE_DATE) en type cible. La chaîne doit être conforme à la syntaxe des littéraux du type cible autorisé pour que l’analyse de format ISO réussisse. Pour que l’analyse OLE réussisse, la chaîne doit être conforme à la syntaxe reconnue par OLE. Si la chaîne ne peut pas être analysée, DBSTATUS_E_CANTCONVERTVALUE est définie. Si des valeurs de composant sont hors limites, DBSTATUS_E_DATAOVERFLOW est définie. |
| 13 | La chaîne est analysée en tant que littéral ISO et convertie en type cible. Si cela échoue, la chaîne est analysée en tant que littéral de date OLE (qui a également des composants d’heure) et convertie d’une date OLE (DBTYPE_DATE) en type cible. La chaîne doit être conforme à la syntaxe des littéraux datetime, sauf si la destination est DBTYPE_DATE ou DBTYPE_DBTIMESTAMP. Si c’est le cas, un littéral datetime ou heure est autorisé à réussir l’analyse de format ISO. Pour que l’analyse OLE réussisse, la chaîne doit être conforme à la syntaxe reconnue par OLE. Si la chaîne ne peut pas être analysée, DBSTATUS_E_CANTCONVERTVALUE est définie. Si des valeurs de composant sont hors limites, DBSTATUS_E_DATAOVERFLOW est définie. |