Escribir instrucciones Transact-SQL internacionales

Actualizado: 17 de julio de 2006

Las bases de datos y las aplicaciones de bases de datos que utilizan instrucciones Transact-SQL obtendrán una mayor portabilidad de un idioma a otro, o admitirán varios idiomas, si se siguen estas directrices:

  • Reemplace todos los tipos de datos char, varchar y text con nchar, nvarchar y nvarchar(max) respectivamente. De esta forma, se evita problemas de conversión de páginas de códigos. Para obtener más información, vea Trabajar con datos Unicode y Programación en el servidor con Unicode.
  • Cuando realice comparaciones y operaciones con los meses y días de la semana, utilice las partes numéricas de la fecha en lugar de cadenas de nombres. Las distintas configuraciones de idioma devuelven nombres diferentes para los meses y los días de la semana. Por ejemplo, DATENAME(MONTH,GETDATE()) devuelve May cuando el idioma está establecido en inglés de EE.UU., Mai cuando el idioma es alemán y mai cuando el idioma es francés. En su lugar, utilice una función como DATEPART que utiliza el número del mes en lugar del nombre. Utilice los nombres DATEPART cuando genere conjuntos de resultados que se van a mostrar al usuario ya que, generalmente, los nombres de fecha resultan más significativos que una representación numérica. No codifique, sin embargo, ninguna lógica que dependa de que los nombres mostrados estén en un idioma determinado.
  • Cuando especifique fechas en las comparaciones o como entrada de las instrucciones INSERT o UPDATE, utilice constantes que se interpretan igual en todas las configuraciones de idioma:
    • Las aplicaciones ADO, OLE DB y ODBC deben utilizar la siguiente marca de hora, fecha y cláusulas de escape de hora ODBC:
      { ts'yyyy-mm-ddhh**: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'}

    • Las aplicaciones que utilizan otras API o desencadenadores, procedimientos almacenados y secuencias de comandos Transact-SQL deben utilizar las cadenas numéricas sin separar. Por ejemplo, yyyymmdd como en 19980924.

    • Las aplicaciones que usan otras API o secuencias de comandos, procedimientos almacenados y desencadenadores Transact-SQL deben utilizar la instrucción CONVERT con un parámetro de estilo explícito para todas las conversiones entre los tipos de datos date y smalldate, y los tipos de datos de cadenas de caracteres. Por ejemplo, la siguiente instrucción se interpreta igual en todas las configuraciones de conexión de formato de fecha o de idioma:

      SELECT *
      FROM AdventureWorks.Sales.SalesOrderHeader
      WHERE OrderDate = CONVERT(DATETIME, '19960719', 101)
      

      Para obtener más información, vea CAST y CONVERT (Transact-SQL).

Vea también

Otros recursos

Consideraciones internacionales para bases de datos y aplicaciones con motor de base de datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

17 de julio de 2006

Contenido modificado:
  • Se reemplazó la referencia al tipo de datos ntext con el tipo de datos nvarchar(max).