Rédiger des instructions Transact-SQL internationales
Les directives suivantes facilitent la transition d’une langue à l’autre des bases de données et applications de bases de données qui utilisent des instructions Transact-SQL , ou leur permettent de prendre en charge directement plusieurs langues :
Remplacez toutes les utilisations des types de données
char
,varchar
, ettext
parnchar
,nvarchar
, etnvarchar(max)
. Vous réglez ainsi le problème de conversion des pages de codes. Pour plus d’informations, voir Classement et prise en charge d’Unicode.Lors des comparaisons et opérations sur les mois et jours de la semaine, utilisez la partie numérique de la date plutôt que les chaînes de noms. Selon les paramètres de langue, des noms de mois et de jours de la semaine différents sont retournés. Par exemple, DATENAME(MONTH,GETDATE()) retourne « May » pour l'anglais (États-Unis), « Mai » pour l'allemand et « mai » pour le français. Utilisez à la place une fonction comme DATEPART qui utilise le numéro du mois plutôt que son nom. Utilisez les noms DATEPART lorsque vous générez des ensembles de résultats qui seront affichés par un utilisateur, car les noms de date sont souvent plus clairs qu'une représentation numérique. Pour autant, ne codez aucun élément logique dépendant des noms affichés d'une langue spécifique.
Pour spécifier des dates dans des comparaisons ou comme entrées d'instructions INSERT ou UPDATE, utilisez des constantes qui sont interprétées de la même manière, quelle que soit la langue définie :
Les applications ADO, OLE DB et ODBC doivent utiliser les clauses ODBC d'échappement de temps, de date et d'horodateur :
{ ts’aaaa- mm-ddhh :mm :ss[.fff] '} tel que : { ts'1998- 09-24 10** :02:20' }**
{ d' aaaa - mm - dd '} tels que : { d'1998- 09-24******
{ t' hh : mm : ss '} tels que : { t'10:02:20'}
Les applications qui utilisent d’autres API, ou encore des scripts, des procédures stockées ou des déclencheurs Transact-SQL , doivent utiliser les chaînes numériques non séparées. Par exemple, yyyymmdd comme 19980924.
Les applications qui utilisent d’autres API ou scripts Transact-SQL, procédures stockées et déclencheurs doivent utiliser l’instruction CONVERT avec un paramètre de style explicite pour toutes les conversions entre les
time
types de données ,datetime
smalldate
date
datetime2 etdatetimeoffset
les types de données et les types de données de chaîne de caractères. Par exemple, l'instruction suivante est interprétée de la même façon, quels que soient les paramètres de connexion concernant la langue et le format de date :SELECT * FROM AdventureWorks2012.Sales.SalesOrderHeader WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
Pour plus d’informations, consultez CAST et CONVERT (Transact-SQL).