Rédiger des instructions Transact-SQL internationalesWrite International Transact-SQL Statements

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-SQLTransact-SQL , ou leur permettent de prendre en charge directement plusieurs langues :Databases and database applications that use Transact-SQLTransact-SQL statements will become more portable from one language to another, or will support multiple languages, if the following guidelines are followed:

  • Remplacez toutes les utilisations des types de données char, varcharet text par nchar, nvarcharet nvarchar(max).Replace all uses of the char, varchar, and text data types with nchar, nvarchar, and nvarchar(max). Vous réglez ainsi le problème de conversion des pages de codes.By doing this, you do not have to consider code page conversion issues. Pour plus d’informations, consultez Collation and Unicode Support.For more information, see Collation and Unicode Support.

  • 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.When you perform month and day-of-week comparisons and operations, use the numeric date parts instead of the name strings. Selon les paramètres de langue, des noms de mois et de jours de la semaine différents sont retournés.Different language settings return different names for the months and weekdays. Par exemple, DATENAME(MONTH,GETDATE()) retourne « May » pour l'anglais (États-Unis), « Mai » pour l'allemand et « mai » pour le français.For example, DATENAME(MONTH,GETDATE()) returns May when the language is set to U.S. English, returns Mai when the language is set to German, and returns mai when the language is set to French. Utilisez à la place une fonction comme DATEPART qui utilise le numéro du mois plutôt que son nom.Instead, use a function such as DATEPART that uses the number of the month instead of the name. 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.Use the DATEPART names when you build result sets to be displayed to a user, because the date names are frequently more meaningful than a numeric representation. Pour autant, ne codez aucun élément logique dépendant des noms affichés d'une langue spécifique.However, do not code any logic that depends on the displayed names being from a specific language.

  • 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 :When you specify dates in comparisons or for input to INSERT or UPDATE statements, use constants that are interpreted the same way for all language settings:

    • Les applications ADO, OLE DB et ODBC doivent utiliser les clauses ODBC d'échappement de temps, de date et d'horodateur :ADO, OLE DB, and ODBC applications should use the ODBC timestamp, date, and time escape clauses of:

      { ts'yyyy-mm-ddhh:mm:ss[.fff] '} tel que : { ts'1998-09-24 10:02:20' }{ ts'yyyy-mm-ddhh:mm:ss[.fff] '} such as: { ts'1998-09-24 10:02:20' }

      { d' yyyy - mm - dd '} such as: { d'1998-09-24'}{ d' yyyy - mm - dd '} such as: { d'1998-09-24'}

      { t' hh : mm : ss '} such as: { t'10:02:20'}{ t' hh : mm : ss '} such as: { 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-SQLTransact-SQL , doivent utiliser les chaînes numériques non séparées.Applications that use other APIs, or Transact-SQLTransact-SQL scripts, stored procedures, and triggers, should use the unseparated numeric strings. Par exemple, yyyymmdd comme 19980924.For example, yyyymmdd as 19980924.

    • Les applications qui utilisent d’autres API, ou encore des scripts, des procédures stockées ou des déclencheurs Transact-SQLTransact-SQL , peuvent également utiliser l’instruction CONVERT avec un paramètre de style explicite pour toutes les conversions entre les types de données time, date, smalldate, datetime, datetime2et datetimeoffset et les types de données de chaînes de caractères.Applications that use other APIs, or Transact-SQLTransact-SQL scripts, stored procedures, and triggers should use the CONVERT statement with an explicit style parameter for all conversions between the time, date, smalldate, datetime, datetime2, and datetimeoffset data types and character string data types. 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 :For example, the following statement is interpreted in the same way for all language or date format connection settings:

      SELECT *  
      FROM AdventureWorks2012.Sales.SalesOrderHeader  
      WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)  
      

      Pour plus d’informations, consultez CAST et CONVERT (Transact-SQL).For more information, see CAST and CONVERT (Transact-SQL).