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).