SQL Server Native Client Conversions (OLE DB)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Cette section explique comment effectuer une conversion entre les valeurs datetime et datetimeoffset. Les conversions décrites dans cette section sont soit déjà fournies par OLE DB, soit une extension cohérente de ce dernier.
Le format des littéraux et des chaînes pour les dates et les heures dans OLE DB suit généralement la norme 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 des chaînes datetime et datetimeoffset est le suivant :
yyyy-mm-dd[ hh:mm:ss[.9999999][ ± hh:mm]]
Le format des chaînes time est :
hh:mm:ss[.9999999]
Le format des chaînes date est :
aaaa-mm-jj
Notes
Les versions antérieures de SQL Server Native Client et SQLOLEDB autorisaient l'implémentation de conversions OLE en cas d'échec des processus de conversion 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 de chaînes autorisent une souplesse en matière d'espace et de largeur de champ. Pour plus d'informations, consultez la section « Formats de données : chaînes et littéraux » dans Prise en charge des types de données pour les améliorations de date et d’heure OLE DB.
Les règles suivantes sont les règles générales de conversion :
Lorsqu'une chaîne est convertie en type date/heure, la chaîne est d'abord analysée en tant que littéral ISO. En cas d'échec, la chaîne est analysée comme un littéral de date OLE doté de composants heure.
Si aucune heure n'est fournie mais le récepteur peut stocker l'heure, l'heure est définie avec la valeur zéro. Si aucune date n'est fournie mais le récepteur peut stocker une date, la date définie est la date actuelle qui utilise les conversions ISO ou bien 1899-12-30 qui utilise les conversions OLE.
Si aucun fuseau horaire n'est fourni dans le type de données que le client utilise mais si le serveur peut stocker le fuseau, les données du client sont supposées apparaître dans le fuseau horaire du client.
Si aucun fuseau horaire n'est fourni au serveur mais le client dispose d'informations sur les fuseaux, le fuseau horaire UTC est adopté. Ce comportement diffère de celui du serveur.
Si l'heure est fournie mais le récepteur ne peut pas la stocker, le composant heure est ignoré.
Si la date est fournie mais le récepteur ne peut pas la stocker, le composant date est ignoré.
En cas de troncation des secondes ou des fractions de seconde lors de la conversion du client au serveur, DB_E_ERRORSOCCURRED est retourné et l'état DBSTATUS_E_DATAOVERFLOW est défini.
En cas de troncation des secondes ou des fractions de seconde lors de la conversion du serveur au client, DBSTATUS_S_TRUNCATED est défini
Dans cette section
Conversions de client à 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 (10.0.x) (ou version ultérieure).
Conversions de serveur à client
Décrit les conversions de date/heure effectuées entre SQL Server 2008 (10.0.x) (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)