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 une application cliente écrite avec SQL Server Native Client OLE DB et SQL Server 2008 (ou version ultérieure).
Transformations
Cette rubrique décrit les conversions effectuées sur le client. Si le client spécifie une précision de fraction de secondes pour un paramètre qui diffère de celui défini sur le serveur, la conversion du client peut entraîner un échec dans les cas où le serveur autoriserait l’opération à réussir. En particulier, le client traite toute troncation de fractions de secondes comme une erreur, tandis que SQL Server arrondit les valeurs de temps à la seconde entière la plus proche.
Si ICommandWithParameters ::SetParameterInfo n’est pas appelé, DBTYPE_DBTIMESTAMP liaisons sont converties comme si elles étaient datetime2.
| À-> De |
DBDATE (date) | DBTIME (heure) | DBTIME2 (heure) | DBTIMESTAMP (smalldatetime) | DBTIMESTAMP (datetime) | DBTIMESTAMP (datetime2) | DBTIMESTAMPOFFSET (datetimeoffset) | STR | WSTR | SQLVARIANT (sql_variant) |
|---|---|---|---|---|---|---|---|---|---|---|
| DATE | 1,2 | 1,3,4 | 4,12 | 1,12 | 1,12 | 1,12 | 1,5, 12 | 1,12 | 1,12 | 1,12 datetime2(0) |
| DBDATE | 1 | - | - | 1,6 | 1,6 | 1,6 | 1,5, 6 | 1,10 | 1,10 | 1 date |
| DBTIME | - | 1 | 1 | 1,7 | 1,7 | 1,7 | 1,5, 7 | 1,10 | 1,10 | 1 Time(0) |
| DBTIME2 | - | 1,3 | 1 | 1,7,10,14 | 1,7,10,15 | 1,7,10 | 1,5,7,10 | 1,10,11 | 1,10,11 | 1 Time(7) |
| DBTIMESTAMP | 1,2 | 1,3,4 | 1,4,10 | 1,10,14 | 1,10,15 | 1,10 | 1,5,10 | 1,10,11 | 1,10,11 | 1,10 datetime2(7) |
| DBTIMESTAMPOFFSET | 1,2,8 | 1,3,4,8 | 1,4,8,10 | 1,8,10,14 | 1,8,10,15 | 1,8,10 | 1,10 | 1,10,11 | 1,10,11 | 1,10 datetimeoffset(7) |
| FILETIME | 1,2 | 1,3,4 | 1,4,13 | 1,13 | 1,13 | 1,13 | 1,5,13 | 1,13 | 1,10 | 1,13 datetime2(3) |
| OCTETS | - | - | - | - | - | - | - | N/A | N/A | N/A |
| VARIANTE | 1 | 1 | 1 | 1,10 | 1,10 | 1,10 | 1,10 | N/A | N/A | 1,10 |
| SSVARIANT | 1,16 | 1,16 | 1,16 | 1,10,16 | 1,10,16 | 1,10,16 | 1,10,16 | N/A | N/A | 1,16 |
| BSTR | 1,9 | 1,9 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | N/A | N/A | N/A |
| STR | 1,9 | 1,9 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | N/A | N/A | N/A |
| WSTR | 1,9 | 1,9 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | 1,9,10 | N/A | N/A | N/A |
Liste des symboles
| Symbole | Sens |
|---|---|
| - | 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. |
| N/A | Non applicable. |
| 1 | Si les données fournies ne sont pas valides, DBSTATUS_E_CANTCONVERTVALUE est définie. Les données d’entrée sont validées avant l’application des conversions. Par conséquent, même si un composant est ignoré par une conversion ultérieure, il doit toujours être valide pour que la conversion réussisse. |
| 2 | Les champs d’heure sont ignorés. |
| 3 | Les fractions de seconde doivent être égales à zéro ou DBSTATUS_E_DATAOVERFLOW est définie. |
| 4 | Le composant date est ignoré. |
| 5 | Le fuseau horaire est défini sur le paramètre de fuseau horaire du client. |
| 6 | L'heure est définie avec la valeur zéro. |
| 7 | La date est définie sur la date actuelle. |
| 8 | L’heure est convertie en UTC. Si une erreur se produit pendant cette conversion, DBSTATUS_E_CANTCONVERTVALUE est définie. |
| 9 | 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. Si le type cible est DBTIMESTAMP, smalldatetimeou datetimedatetime2que la chaîne doit être conforme à la syntaxe pour la date, l’heure ou datetime2 les littéraux, ou la syntaxe reconnue par OLE. Si la chaîne est un littéral de date, tous les composants horaires sont définis sur zéro. Si la chaîne est un littéral d’heure, la date est définie sur la date actuelle.Pour tous les autres types cibles, la chaîne doit être conforme à la syntaxe des littéraux du type cible. |
| 10 | Si la troncation de fractions de secondes avec perte de données se produit, DBSTATUS_E_DATAOVERFLOW est définie. Pour les conversions de chaînes, la vérification de dépassement de capacité est possible uniquement lorsque la chaîne est conforme à la syntaxe ISO. Si la chaîne est un littéral de date OLE, les fractions de seconde sont arrondies. Pour la conversion de DBTIMESTAMP (datetime) vers smalldatetime SQL Server Native Client, tronquez silencieusement la valeur de secondes au lieu de déclencher l’erreur de DBSTATUS_E_DATAOVERFLOW. |
| 11 | Le nombre de chiffres fractionnaires (échelle) est déterminé à partir de la taille de la colonne de destination, selon le tableau suivant. Pour les tailles de colonne supérieures à la plage du tableau, une échelle de 9 est nécessaire. Cette conversion accepte jusqu'à neuf chiffres de fractions de seconde, valeur maximale autorisée par OLE DB. Toutefois, si le type source est DBTIMESTAMP et que la fraction de seconde est égale à zéro, aucun chiffre fractionnaire de seconde ou décimale n’est généré. Ce comportement garantit la compatibilité descendante pour les applications développées à l’aide d’anciens fournisseurs OLE DB. Une taille de colonne d’environ 0 implique une taille illimitée dans OLE DB (9 chiffres, sauf si la règle à 3 chiffres pour DBTIMESTAMP s’applique). DBTIME2 - 8, 10..18 (longueur en caractères) ; 0, 1..9 (échelle) DBTIMESTAMP - 19, 21..29 (longueur en caractères) ; 0, 1..9 (échelle) DBTIMESTAMPOFFSET - 26, 28..36 (longueur en caractères) ; 0, 1..9 (échelle) |
| 12 | La sémantique de conversion antérieure à SQL Server 2008 pour DBTYPE_DATE est conservée. Les fractions de seconde sont tronquées à zéro. |
| 13 | La sémantique de conversion antérieure à SQL Server 2008 pour DBTYPE_FILETIME est conservée. Si vous utilisez l’API Windows FileTimeToSystemTime, la précision fractionnaire en secondes est limitée à 1 milliseconde. |
| 14 | La sémantique de conversion antérieure à SQL Server 2008 est smalldatetime conservée. Les secondes sont définies sur zéro. |
| 15 | La sémantique de conversion antérieure à SQL Server 2008 est datetime conservée. Les secondes sont arrondies au 300ème le plus proche d’une seconde. |
| 16 | Le comportement de conversion d’une valeur (d’un type donné) incorporé dans un struct client SSVARIANT est identique au comportement de la même valeur et du même type lorsqu’il n’est pas incorporé dans un struct client SSVARIANT. |