Partager via


Liaisons et conversions (OLE DB)

Cette section explique comment convertir entre datetime et datetimeoffset valeurs. Les conversions décrites dans cette section sont déjà fournies par OLE DB ou sont une extension cohérente d’OLE DB.

Le format des littéraux et des chaînes pour les dates et les heures dans OLE DB suit généralement ISO et ne dépend pas des paramètres régionaux du client. Une exception est DBTYPE_DATE, où la norme est OLE Automation. Toutefois, étant donné que SQL Server Native Client convertit uniquement les types lorsque les données sont transmises au client ou à partir du client, il n’existe aucun moyen pour une application de forcer SQL Server Native Client à convertir entre les formats de DBTYPE_DATE et de chaîne. Sinon, les chaînes utilisent les formats suivants (le texte entre crochets indique un élément facultatif) :

  • Le format et datetimedatetimeoffset les chaînes sont les suivants :

    aaaa-mm-dd[ hh :mm :ss[.9999999][ ?? hh :mm]]

  • Le format des time chaînes est le suivant :

    hh :mm :ss[.9999999]

  • Le format des date chaînes est le suivant :

    aaaa-mm-Dd

Remarque

Les versions antérieures de SQL Server Native Client et SQLOLEDB ont implémenté des conversions OLE, en cas d’échec des conversions standard. Par conséquent, certaines conversions effectuées par SQL Server Native Client 10.0 et versions ultérieures diffèrent de la spécification OLE DB.

Les conversions à partir de chaînes permettent une flexibilité dans l’espace blanc et la largeur du champ. Pour plus d’informations, consultez la section « Formats de données : chaînes et littéraux » dans la prise en charge des types de données pour les améliorations de date et d’heure OLE DB.

Voici les règles de conversion générales :

  • Lorsqu’une chaîne est convertie en type date/heure, la chaîne est d’abord analysée en tant que littéral ISO. Si cela échoue, la chaîne est analysée en tant que littéral de date OLE, qui a des composants d’heure.

  • Si aucune heure n’est présente, mais que le récepteur peut stocker l’heure, l’heure est définie sur zéro. Si aucune date n’est présente, mais que le récepteur peut stocker une date, la date est définie sur la date actuelle lorsque les conversions ISO sont utilisées et sur 1899-12-30 lorsque les conversions OLE sont utilisées.

  • Si aucun fuseau horaire n’est présent dans le type de données que le client utilise, mais que le serveur peut stocker le fuseau horaire, les données sur le client sont supposées se trouver dans le fuseau horaire du client.

  • Si aucun fuseau horaire n’est présent sur le serveur, mais que le client a des informations de fuseau horaire, le fuseau horaire UTC est supposé. Cela diffère du comportement du serveur.

  • Si l’heure est présente, mais que le récepteur ne peut pas stocker l’heure, le composant d’heure est ignoré.

  • Si la date est présente, mais que le récepteur ne peut pas stocker la date, le composant date est ignoré.

  • Si la troncation de secondes ou de fractions de secondes se produit lors de la conversion du client au serveur, DB_E_ERRORSOCCURRED est retournée et l’état DBSTATUS_E_DATAOVERFLOW est défini.

  • Si la troncation de secondes ou de fractions de secondes se produit lors de la conversion du serveur au client, DBSTATUS_S_TRUNCATED est définie

Dans cette section

Conversions effectuées du client vers le serveur
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).

Conversions effectuées du serveur au client
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.

Voir aussi

Améliorations des types de données de date et d’heure (OLE DB)