Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Base de dados SQL no Microsoft Fabric
Bases de dados e aplicações de bases de dados que utilizam instruções Transact-SQL tornar-se-ão mais portáteis de uma língua para outra, ou suportarão múltiplas línguas, se forem seguidas as seguintes diretrizes:
A partir do SQL Server 2019 (15.x) e no Azure SQL Database, utilize um:
- Os tipos de dados char, varchar e varchar(max) com uma colação habilitada para UTF-8, e os dados são codificados usando UTF-8.
- Os tipos de dados nchar, nvarchar e nvarchar(max ) com caracteres suplementares (SC) permitiram a colação, e os dados são codificados usando UTF-16. A utilização de uma colação não-SC resulta na codificação dos dados usando UCS-2.
Isto evita problemas de conversão de páginas de código. Para outras considerações, veja Diferenças de armazenamento entre UTF-8 e UTF-16.
Até ao SQL Server 2017 (14.x), substituir todas as utilizações dos tipos de dados char, varchar e varchar(max) por nchar, nvarchar e nvarchar(max). Se usar uma colação habilitada por caracteres suplementares (SC), os dados são codificados usando UTF-16. A utilização de uma colação não-SC resulta na codificação dos dados usando UCS-2. Isto evita problemas de conversão de páginas de código. Para obter mais informações, consulte Collation and Unicode Support.
Importante
O tipo de dado de texto está obsoleto e não deve ser utilizado em novos trabalhos de desenvolvimento. Planeio converter os dados de texto para varchar(max).
Ao fazer comparações e operações de mês e dia de semana, use as partes numéricas de data em vez das cadeias de nomes. Diferentes definições linguísticas devolvem nomes diferentes para os meses e dias úteis. Por exemplo,
DATENAME(MONTH,GETDATE())retornaMayquando a língua está definida para inglês dos EUA, retornaMaiquando a língua está definida para alemão, e retornamaiquando a língua está definida para francês. Em vez disso, use uma função como o DATEPART , que utiliza o número do mês em vez do nome. Use os nomes DATEPART ao construir conjuntos de resultados para serem exibidos a um utilizador, porque os nomes das datas são frequentemente mais significativos do que uma representação numérica. No entanto, não programes nenhuma lógica que dependa de os nomes apresentados serem de uma língua específica.Quando especifica datas em comparações ou para entrada de instruções INSERT ou UPDATE, use constantes que são interpretadas da mesma forma para todas as definições de linguagem:
As aplicações ADO, OLE DB e ODBC devem usar as cláusulas de escape ODBC para timestamp, data e tempo de:
{ ts'yyyy-mm-ddhh:mm:ss [.fff] '} tal como: { ts'1998-09-24 10:02:20'}
{ d'yyyy--dd'} como: { d'1998-09-24'}
{ t'hh:mm:ss'} como: { t'10:02:20'}
Aplicações que utilizam outras APIs, ou scripts Transact-SQL, procedimentos armazenados e triggers, devem usar as cadeias numéricas não separadas. Por exemplo, yyyymmdd como 19980924.
Aplicações que utilizam outras APIs, ou scripts Transact-SQL, procedimentos armazenados e triggers devem usar a instrução CONVERT com um parâmetro de estilo explícito para todas as conversões entre os tipos de dados time, date, smalldate, datetime, datetime2 e datetimeoffset, bem como os tipos de dados de cadeia de caracteres. Por exemplo, a seguinte instrução é interpretada da mesma forma para todas as definições de ligação de língua ou formato de data:
SELECT * FROM AdventureWorks2022.Sales.SalesOrderHeader WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
Consulte também
CAST e CONVERT (Transact-SQL)
DATEPART (Transact-SQL)
Suporte à Coletão e Unicode