Escribir instrucciones Transact-SQL internacionalesWrite International Transact-SQL Statements

SE APLICA A: síSQL Server síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Las bases de datos y las aplicaciones de bases de datos que utilizan instrucciones Transact-SQLTransact-SQL obtendrán una mayor portabilidad de un idioma a otro, o admitirán varios idiomas, si se siguen estas directrices:Databases and database applications that use Transact-SQLTransact-SQL statements will become more portable from one language to another, or will support multiple languages, if the following guidelines are followed:

  • A partir de Versión preliminar de SQL Server 2019SQL Server 2019 preview, use:Starting with Versión preliminar de SQL Server 2019SQL Server 2019 preview, use either:

    • Los tipos de datos char, varchar y varchar(max) con una intercalación compatible con UTF-8.The char, varchar, and varchar(max) data types with a UTF-8 enabled collation.
    • Los tipos de datos nchar, nvarchar y nvarchar(max) con una cualquier intercalación.The nchar, nvarchar, and nvarchar(max) data types with any collation.

    Esto evita problemas de conversión de página de códigos.This avoids code page conversion issues. Para más información, consulte Compatibilidad con la intercalación y Unicode.For more information, see Collation and Unicode Support.

  • Hasta SQL Server 2017 (14.x)SQL Server 2017 (14.x), reemplace todos los usos de los tipos de datos char, varchar y varchar(max) por nchar, nvarchar y nvarchar(max) .Up to SQL Server 2017 (14.x)SQL Server 2017 (14.x), replace all uses of the char, varchar, and varchar(max) data types with nchar, nvarchar, and nvarchar(max). Esto evita problemas de conversión de página de códigos.This avoids code page conversion issues. Para más información, consulte Compatibilidad con la intercalación y Unicode.For more information, see Collation and Unicode Support.

    Importante

    El tipo de datos text está en desuso y no debe usarse en nuevos trabajos de desarrollo.The text data type is deprecated and should not be used in new development work. Planee la conversión de datos de tipo text a varchar (max) .Plan to convert text data to varchar(max).

  • 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.When doing month and day-of-week comparisons and operations, use the numeric date parts instead of the name strings. Las distintas configuraciones de idioma devuelven nombres diferentes para los meses y los días de la semana.Different language settings return different names for the months and weekdays. Por ejemplo, DATENAME(MONTH,GETDATE()) devuelve May cuando el idioma está establecido en inglés de EE. UU., devuelve Mai cuando el idioma está establecido en alemán y mai cuando el idioma está establecido en francés.For example, DATENAME(MONTH,GETDATE()) returns May when the language is set to U.S. English, returns Mai when the language is set to German, and returns mai when the language is set to French. En su lugar, utilice una función como DATEPART que utiliza el número del mes en lugar del nombre.Instead, use a function such as DATEPART that uses the number of the month instead of the name. 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.Use the DATEPART names when you build result sets to be displayed to a user, because the date names are frequently more meaningful than a numeric representation. No codifique, sin embargo, ninguna lógica que dependa de que los nombres mostrados estén en un idioma determinado.However, don't code any logic that depends on the displayed names being from a specific language.

  • 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:When you specify dates in comparisons or for input to INSERT or UPDATE statements, use constants that are interpreted the same way for all language settings:

    • Las aplicaciones ADO, OLE DB y ODBC deben utilizar la siguiente marca de tiempo, fecha y cláusulas de escape de hora ODBC:ADO, OLE DB, and ODBC applications should use the ODBC timestamp, date, and time escape clauses of:

      { ts" yyyy - mm - dd hh : mm : ss [ . fff] "} como: { ts"1998-09-24 10:02:20"}{ ts' yyyy - mm - dd hh : mm : ss [.fff] '} such as: { ts'1998-09-24 10:02:20'}

      { d" yyyy - mm - dd "} como: { d"1998-09-24"}{ d' yyyy - mm - dd '} such as: { d'1998-09-24'}

      { t" hh : mm : ss "} como: { t"10:02:20"}{ t' hh : mm : ss '} such as: { t'10:02:20'}

    • Las aplicaciones que utilizan otras API o desencadenadores, procedimientos almacenados y scripts Transact-SQLTransact-SQL deben utilizar las cadenas numéricas sin separar.Applications that use other APIs, or Transact-SQLTransact-SQL scripts, stored procedures, and triggers, should use the unseparated numeric strings. Por ejemplo, yyyymmdd como en 19980924.For example, yyyymmdd as 19980924.

    • Las aplicaciones que usan otras API o scripts, procedimientos almacenados y desencadenadores Transact-SQLTransact-SQL deben usar la instrucción CONVERT con un parámetro de estilo explícito para todas las conversiones entre los tipos de datos time, date, smalldate, datetime, datetime2 y datetimeoffset y los tipos de datos de cadenas de caracteres.Applications that use other APIs, or Transact-SQLTransact-SQL scripts, stored procedures, and triggers should use the CONVERT statement with an explicit style parameter for all conversions between the time, date, smalldate, datetime, datetime2, and datetimeoffset data types and character string data types. Por ejemplo, la siguiente instrucción se interpreta igual en todas las configuraciones de conexión de formato de fecha o de idioma:For example, the following statement is interpreted in the same way for all language or date format connection settings:

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

Vea tambiénSee also

CAST y CONVERT (Transact-SQL) CAST and CONVERT (Transact-SQL)
DATEPART (Transact-SQL) DATEPART (Transact-SQL)
Collation and Unicode SupportCollation and Unicode Support