Gravar instruções Transact-SQL internacionais
Os bancos de dados e aplicativos de bancos de dados que usam instruções Transact-SQL serão mais portáteis de um idioma para outro, ou darão suporte a vários idiomas, se as diretrizes a seguir forem cumpridas.
Substitua todos os usos do char, varchar e tipos de dados text por nchar, nvarchar e nvarchar(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 a agrupamentos e a 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-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 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 tipo 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 AdventureWorks2012.Sales.SalesOrderHeader WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
Para obter mais informações, consulte CAST e CONVERT (Transact-SQL).