Gravar instruções Transact-SQL internacionais
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System)
Os bancos de dados e aplicativos de bancos de dados que usarem instruções Transact-SQL se tornarão mais portáteis de uma linguagem de programação para outra ou darão suporte a várias linguagens, se as diretrizes a seguir forem cumpridas:
A partir do SQL Server 2019 (15.x) e no Banco de Dados SQL do Azure, use:
- Os tipos de dados char, varchar e varchar (max) com uma ordenação habilitada para UTF-8 e os dados são codificados usando o UTF-8.
- Os tipos de dados nchar, nvarchar e nvarchar(max) com a ordenação habilitada para SC (caractere suplementar) e os dados são codificados usando UTF-16. O uso de uma ordenação não SC resulta na codificação de dados usando o UCS-2.
Isso evita problemas de conversão de página de código. Para acessar outras considerações, confira Diferenças de armazenamento entre UTF-8 e UTF-16.
Até o SQL Server 2017 (14.x), substitua todos os usos dos tipos de dados char, varchar e varchar(max) comnchar, nvarchar e nvarchar(max). Se você estiver usando uma ordenação habilitada para SC (caractere suplementar), os dados serão codificados usando UTF-16. O uso de uma ordenação não SC resulta na codificação de dados usando o UCS-2. Isso evita problemas de conversão de página de código. Para obter mais informações, consulte Suporte de agrupamento e unicode.
Importante
O tipo de dados texto foi preterido e não deve ser usado em novos trabalhos de desenvolvimento. Planeje converter dados de texto em varchar(max).
Ao realizar comparações e operações de mês e dia da semana, use as partes de data numérica em vez de cadeias de caracteres de nomes. Configurações de linguagem diferentes retornam nomes diferentes para os meses e dias de semana. Por exemplo,
DATENAME(MONTH,GETDATE())
retornaMay
quando o idioma está definido como inglês dos EUA, retornaMai
quando o idioma é definido como alemão e retornamai
quando o idioma é definido como francês. No lugar, use uma função como DATEPART que usa o número do mês ao invés do nome. Use os nomes DATEPART quando for construir conjuntos de resultados a serem exibidos a um usuário, pois os nomes de datas geralmente são mais significativos que uma representação numérica. Porém, não codifique nenhuma lógica que dependa dos nomes exibidos sendo modificados em um idioma específico.Quando especificar datas em comparações ou para entradas nas instruções INSERT ou UPDATE, use as constantes que são interpretadas da mesma maneira de todas as definições de linguagem:
Os aplicativos ODBC, ADO e OLE DB devem usar as cláusulas de fuga ODBC timestamp, data e hora para:
{ ts' yyyy - mm - dd hh : mm : ss [.fff] '} como: { ts'1998-09-24 10:02:20'}
{ d' yyyy - mm - dd '} como: { d'1998-09-24'}
{ t' hh : mm : ss '} como: { t'10:02:20'}
Os aplicativos que usam outras APIs ou scripts Transact-SQL, procedimentos armazenados e gatilhos, devem usar as sequências numéricas de não separadas. Por exemplo, yyyymmdd como 19980924.
Os aplicativos que usam outras APIs ou que usam scripts Transact-SQL, procedimentos armazenados e gatilhos 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 e os tipos de dados da cadeia de caracteres. Por exemplo, a instrução a seguir é interpretada da mesma maneira para todas configurações de conexão de formato de data ou de linguagem:
SELECT * FROM AdventureWorks2022.Sales.SalesOrderHeader WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
Confira também
CAST e CONVERT (Transact-SQL)
DATEPART (Transact-SQL)
Suporte a ordenações e a Unicode