Scrittura di istruzioni Transact-SQL internazionaliWrite International Transact-SQL Statements

Le linee guida seguenti consentono di aumentare il grado di portabilità tra lingue diverse, nonché il supporto di più lingue, per i database e le applicazioni di database che utilizzano istruzioni Transact-SQLTransact-SQL .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:

  • Sostituire tutte le occorrenze dei tipi di dati char, varchare text con nchar, nvarchare nvarchar(max).Replace all uses of the char, varchar, and text data types with nchar, nvarchar, and nvarchar(max). In questo modo non si verificano problemi a livello di conversione della tabella codici.By doing this, you do not have to consider code page conversion issues. Per altre informazioni, vedere Collation and Unicode Support.For more information, see Collation and Unicode Support.

  • Quando si eseguono confronti e operazioni con mesi o giorni della settimana, utilizzare le parti numeriche della data anziché le stringhe di nomi.When you perform month and day-of-week comparisons and operations, use the numeric date parts instead of the name strings. I nomi dei mesi e dei giorni della settimana restituiti variano a seconda dell'impostazione della lingua.Different language settings return different names for the months and weekdays. Ad esempio, DATENAME (MONTH,GETDATE()) restituisce May quando la lingua è impostata sull'inglese (Stati Uniti) Mai se è impostato il tedesco e mai se è impostato il francese.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. Specificare pertanto una funzione quale DATEPART che utilizza il numero anziché il nome del mese.Instead, use a function such as DATEPART that uses the number of the month instead of the name. Utilizzare i nomi DATEPART quando si compilano i set di risultati da visualizzare all'utente, in quanto le stringhe di nomi sono più significative delle parti numeriche.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. Non creare tuttavia il codice di logica che dipende dai nomi visualizzati di una lingua specifica.However, do not code any logic that depends on the displayed names being from a specific language.

  • Quando si specificano le date nei confronti o nell'input di istruzioni INSERT e UPDATE, utilizzare costanti che vengono interpretate nello stesso modo indipendentemente dall'impostazione della lingua: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:

    • Le applicazioni ADO, OLE DB e ODBC devono utilizzare le clausole di escape seguenti relative a timestamp, data e ora:ADO, OLE DB, and ODBC applications should use the ODBC timestamp, date, and time escape clauses of:

      { ts'aaaa-mm-gghh:mm:ss[.fff] '} ad esempio: { 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'}

    • Nelle applicazioni che utilizzano altre API, oppure script, stored procedure e trigger di Transact-SQLTransact-SQL , è necessario utilizzare le stringhe numeriche non separate,Applications that use other APIs, or Transact-SQLTransact-SQL scripts, stored procedures, and triggers, should use the unseparated numeric strings. Ad esempio, aaaammgg come 19980924.For example, yyyymmdd as 19980924.

    • Nelle applicazioni che usano altre API oppure script, stored procedure e trigger di Transact-SQLTransact-SQL è anche possibile usare l'istruzione CONVERT con un parametro di stile esplicito per tutte le conversioni tra i tipi di dati time, date, smalldate, datetime, datetime2e datetimeoffset e i tipi di dati stringa di caratteri.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. L'istruzione seguente viene interpretata nello stesso modo indipendentemente dalle impostazioni di connessione della lingua o del formato della data: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)  
      

      Per altre informazioni, vedere CAST and CONVERT (Transact-SQL).For more information, see CAST and CONVERT (Transact-SQL).