Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Sistema di Piattaforma Analitica (PDW)
Database SQL in Microsoft Fabric
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:
A partire da SQL Server 2019 (15.x) e in Database SQL di Azure, usare:
- I tipi di dati char, varchar e varchar(max) con le regole di confronto abilitate per UTF-8 e i dati codificati con UTF-8.
- I tipi di dati nchar, nvarchar e nvarchar(max) con regole di confronto abilitate per caratteri supplementari (SC), in cui i dati sono codificati usando UTF-16. L'uso di regole di confronto non-SC comporta che i dati vengano codificati usando UCS-2.
In questo modo si evitano problemi di conversione della tabella codici. Per altre considerazioni, vedere Differenze nell'archiviazione tra UTF-8 e UTF-16.
Fino a SQL Server 2017 (14.x) sostituire tutte le occorrenze dei tipi di dati char, varchar e varchar(max) con nchar, nvarchar e nvarchar(max). Se si usano regole di confronto abilitate per i caratteri supplementari (SC), i dati vengono codificati con UTF-16. L'uso di una collazione non SC fa sì che i dati vengano codificati usando UCS-2. In questo modo si evitano problemi di conversione della tabella codici. Per ulteriori informazioni, vedi Supporto per Unicode e regole di confronto.
Importante
Il tipo di dati text è deprecato e non deve essere usato in nuovi progetti di sviluppo. Pianificare la conversione dei dati text al tipo di dati varchar(max).
Quando si eseguono confronti e operazioni con mesi o giorni della settimana, usare le parti numeriche della data invece delle 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())restituisceMayquando la lingua è impostata sull'inglese (Stati Uniti),Maise è impostata sul tedesco emaise è impostata sul francese. Specificare quindi una funzione quale DATEPART che usa il numero invece del nome del mese. Utilizzare i nomi DATEPART quando si creano set di risultati da visualizzare all'utente, perché i nomi delle date sono spesso più significativi di una rappresentazione numerica. Tuttavia, non scrivere alcuna logica che dipenda dal fatto che i nomi visualizzati siano in una lingua specifica.Quando si specificano le date nei confronti o come input per le istruzioni INSERT o UPDATE, usare costanti che vengano interpretate nello stesso modo per tutte le impostazioni della lingua:
Le applicazioni ADO, OLE DB e ODBC devono utilizzare le clausole di escape seguenti relative a timestamp, data e ora:
{ ts'yyyy-mm-gghh:mm:ss [.fff] '} ad esempio: { ts'1998-09-24 10:02:20'}
{ d'aaaa-mm-gg'} 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.
Nelle applicazioni che usano altre API oppure script, stored procedure e trigger di Transact-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, datetime2 e datetimeoffset e 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 AdventureWorks2022.Sales.SalesOrderHeader WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
Vedi anche
CAST e CONVERT (Transact-SQL)
DATEPART (Transact-SQL)
Regole di confronto e supporto Unicode