Gravar instruções Transact-SQL internacionais
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:
Substitua todos os usos do
char
,varchar
e tipos de dadostext
pornchar
,nvarchar
envarchar(max)
. Fazendo isto, você não deve considerar assuntos relacionados à conversão de página de código. Para obter mais informações, consulte Suporte de agrupamento e unicode.Ao executar 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()) retorna May quando o idioma está definido como inglês dos EUA, retorna Mai quando o idioma é definido como alemão e retorna mai 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 qualquer 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-ddhh:mm:ss[.fff] '} como: { ts'1998- 09-24 10**:02:20' }**
{ d' aaaa - 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 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
time
tipos de dados ,date
,smalldate
,datetime
, , datetime2 edatetimeoffset
tipos de dados e 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 AdventureWorks2012.Sales.SalesOrderHeader WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
Para obter mais informações, veja CAST e CONVERT (Transact-SQL).