Partilhar via


Gravando instruções Transact-SQL internacionais

Os bancos de dados e seus aplicativos que usam instruções Transact-SQL se tornarão mais portáveis de um idioma para outro, ou fornecerã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 Trabalhando com dados Unicode e Programação do lado do servidor com 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 a linguagem for definida como inglês dos EUA, retorna Mai quando a linguagem for definida como alemão e retorno mai quando a linguagem for definida 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] '} por exemplo: { ts'1998-09-24 10:02:20' }**

      { d'yyyy-mm-dd**'}** por exemplo: { d'1998-09-24**'}**

      { t'hh:mm:ss'} por exemplo: { 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 AdventureWorks2008R2.Sales.SalesOrderHeader
      WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)
      

      Para obter mais informações, consulte CAST e CONVERT (Transact-SQL).

      Para obter mais informações sobre a portabilidade dos formatos de data e hora, consulte Usando dados de data e hora.