Condividi tramite


Scrittura di istruzioni Transact-SQL internazionali

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 usano istruzioni Transact-SQL:

  • Sostituire tutte le occorrenze dei tipi di dati char, varchar e text con nchar, nvarchar e nvarchar(max). In questo modo non si verificano problemi a livello di conversione della tabella codici. Per altre informazioni, vedere 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. I nomi dei mesi e dei giorni della settimana restituiti variano a seconda dell'impostazione della lingua. 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. Specificare pertanto una funzione quale DATEPART che utilizza il numero anziché il nome del mese. 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. Non creare tuttavia il codice di logica che dipende dai nomi visualizzati di una lingua specifica.

  • 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:

    • Le applicazioni ADO, OLE DB e ODBC devono utilizzare le clausole di escape seguenti relative a timestamp, data e ora:

      { ts'aaaa-mm-gghh:mm:ss[.fff] '} ad esempio: { ts'1998-09-24 10**:02:20' }**

      { d'aaaa-mm-dd'} ad esempio: { d'1998- 09-24**'}**

      { t'hh:mm:ss'} ad esempio: { t'10:02:20'}

    • Nelle applicazioni che usano altre API, oppure script, stored procedure e trigger di Transact-SQL, è necessario usare le stringhe numeriche non separate. Ad esempio, aaaammgg come 19980924.

    • Le applicazioni che usano altre API o script Transact-SQL, stored procedure e trigger devono usare l'istruzione CONVERT con un parametro di stile esplicito per tutte le conversioni tra i timetipi di dati , datesmalldate, , , datetimedatetime2 e datetimeoffset i tipi di dati stringa di caratteri. L'istruzione seguente viene interpretata nello stesso modo indipendentemente dalle impostazioni di connessione della lingua o del formato della data:

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

      Per altre informazioni, vedere CAST e CONVERT (Transact-SQL).