3 Entrada quando é feita a conversão em datetime; saída quando é feita a conversão em dados de caractere.3 Input when you convert to datetime; output when you convert to character data.

4 Criado para uso do XML.4 Designed for XML use.Para a conversão de datetime ou smalldatetime em dados de caractere, veja o formato de saída na tabela anterior.For conversion from datetime or smalldatetime to character data, see the previous table for the output format.

6 Apenas compatível na conversão de dados de caractere em datetime ou smalldatetime.6 Only supported when casting from character data to datetime or smalldatetime.Ao converter dados de caractere que representam componentes apenas de data ou apenas de hora em tipos de dados datetime ou smalldatetime, o componente de hora não especificado é definido como 00:00:00.000 e o componente de data não especificado é definido como 1900-01-01.When casting character data representing only date or only time components to the datetime or smalldatetime data types, the unspecified time component is set to 00:00:00.000, and the unspecified date component is set to 1900-01-01.

Ao converter dados de caractere em datetimeoffset, usando um estilo que inclui uma hora, um deslocamento de fuso horário é acrescentado ao resultado.When converting character data to datetimeoffset, using a style that includes a time, a time zone offset is appended to the result.

Estilos float e realfloat and real styles

Para uma expression de float ou real, style pode ter um dos valores mostrados na tabela a seguir.For a float or realexpression, style can have one of the values shown in the following table.Outros valores são processados como 0.Other values are processed as 0.

Estilos money e smallmoneymoney and smallmoney styles

Para uma expression de money ou smallmoney, style pode ter um dos valores mostrados na tabela a seguir.For a money or smallmoneyexpression, style can have one of the values shown in the following table.Outros valores são processados como 0.Other values are processed as 0.

ValorValue

SaídaOutput

0 (padrão)0 (default)

Nenhuma vírgula a cada três dígitos à esquerda do ponto decimal e dois dígitos à direita do ponto decimalNo commas every three digits to the left of the decimal point, and two digits to the right of the decimal point

Exemplo: 4.235,98.Example: 4235.98.

11

Vírgulas a cada três dígitos à esquerda do ponto decimal e dois dígitos à direita do ponto decimalCommas every three digits to the left of the decimal point, and two digits to the right of the decimal point

Exemplo: 3.510,92.Example: 3,510.92.

22

Nenhuma vírgula a cada três dígitos à esquerda do ponto decimal e quatro dígitos à direita do ponto decimalNo commas every three digits to the left of the decimal point, and four digits to the right of the decimal point

Se for habilitado, o servidor poderá usar as informações a seguir fornecidas em um subconjunto de DTD interno, para executar operações de análise de não validação.If enabled, the server can use the following information that is provided in an internal DTD subset, to perform nonvalidating parse operations.

Se o tamanho da expressão convertida for maior que o tamanho do data_type, o resultado será truncado à direita.If the length of the converted expression exceeds the length of the data_type, the result is right truncated.

data_types de comprimento fixo maiores que o resultado convertido têm zeros adicionados à direita do resultado.Fixed length data_types larger than the converted result have zeros added to the right of the result.

Para um data_type de tipo de caractere de tamanho fixo, se o tamanho do resultado convertido for menor que o tamanho do data_type, serão adicionados espaços à direita da expressão convertida, para manter um número par de dígitos hexadecimais.For a fixed size character type data_type, if the length of the converted result is less than its length of the data_type, spaces are added to the right of the converted expression, to maintain an even number of hexadecimal digits.

Os caracteres 0x serão adicionados à esquerda do resultado convertido para style 1.The characters 0x will be added to the left of the converted result for style 1.

Ordenação da saídaOutput Collation

Quando as funções CAST ou CONVERT produzem uma cadeia de caracteres e elas recebem uma entrada de cadeia de caracteres, a saída tem a mesma ordenação e o mesmo rótulo de ordenação da entrada.When the CAST or CONVERT functions output a character string, and they receive a character string input, the output has the same collation and collation label as the input.Se a entrada não for uma cadeia de caracteres, a saída terá a ordenação padrão do banco de dados e um rótulo de ordenação de padrão coercível.If the input is not a character string, the output has the default collation of the database, and a collation label of coercible-default.Para obter mais informações, consulte Precedência de ordenação (Transact-SQL ).For more information, see Collation Precedence (Transact-SQL).

Para atribuir uma ordenação diferente à saída, aplique a cláusula COLLATE à expressão do resultado da função CAST ou CONVERT.To assign a different collation to the output, apply the COLLATE clause to the result expression of the CAST or CONVERT function.Por exemplo:For example:

Não construa valores binary e depois converta-os em um tipo de dados da categoria de tipo de dados numéricos.Do not construct binary values, and then convert them to a data type of the numeric data type category.O SQL ServerSQL Server não garante que o resultado de uma conversão de tipo de dados decimal ou numeric em binary será igual entre as versões do SQL ServerSQL Server.SQL ServerSQL Server does not guarantee that the result of a decimal or numeric data type conversion, to binary, will be the same between versions of SQL ServerSQL Server.

A tabela a seguir lista os estilos para os quais a conversão de cadeia de caracteres em datetime é não determinística.The following table lists the styles for which the string-to-datetime conversion is nondeterministic.

No nível de compatibilidade 110 e superior, as operações CAST e CONVERT nos tipos de dados time e datetime2 sempre têm 121 como o estilo padrão.Under compatibility level 110 and higher, the CAST and CONVERT operations on the time and datetime2 datatypes always have 121 as the default style.Se uma consulta depender do comportamento antigo, use um nível de compatibilidade inferior a 110 ou especifique explicitamente o estilo 0 na consulta afetada.If a query relies on the old behavior, use a compatibility level less than 110, or explicitly specify the 0 style in the affected query.

ExemplosExamples

A.A.Usando CAST e CONVERTUsing both CAST and CONVERT

Cada exemplo recupera o nome dos produtos que têm um 3 no primeiro dígito de seu preço de lista e converte seus valores ListPrice em int.These examples retrieve the name of the product, for those products that have a 3 as the first digit of list price, and converts their ListPrice values to int.

-- Use CAST
USE AdventureWorks2012;
GO
SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice
FROM Production.Product
WHERE CAST(ListPrice AS int) LIKE '3%';
GO
-- Use CONVERT.
USE AdventureWorks2012;
GO
SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice
FROM Production.Product
WHERE CONVERT(int, ListPrice) LIKE '3%';
GO

E.E.Usando CAST com a cláusula LIKEUsing CAST with the LIKE clause

Este exemplo converte os valores SalesYTD da coluna money no tipo de dados int e, em seguida, no tipo de dados char(20), de modo que a cláusula LIKE possa usá-lo.This example converts the money column SalesYTD values to data type int, and then to data typechar(20), so that the LIKE clause can use it.

USE AdventureWorks2012;
GO
SELECT p.FirstName, p.LastName, s.SalesYTD, s.BusinessEntityID
FROM Person.Person AS p
JOIN Sales.SalesPerson AS s
ON p.BusinessEntityID = s.BusinessEntityID
WHERE CAST(CAST(s.SalesYTD AS int) AS char(20)) LIKE '2%';
GO

Começando com valores GETDATE(), este exemplo exibe a data e a hora atuais, usa CAST para alterar a data e a hora atuais em um tipo de dados de caractere e, em seguida, usa CONVERT para exibir a data e a hora no formato ISO 8601.Starting with GETDATE() values, this example displays the current date and time, uses CAST to change the current date and time to a character data type, and then uses CONVERT to display the date and time in the ISO 8601 format.

Este exemplo é aproximadamente o oposto do exemplo anterior.This example is approximately the opposite of the previous example.Este exemplo exibe uma data e hora como dados de caracteres, usa CAST para alterar os dados de caractere no tipo de dados datetime e, em seguida, usa CONVERT para alterar os dados de caractere no tipo de dados datetime.This example displays a date and time as character data, uses CAST to change the character data to the datetime data type, and then uses CONVERT to change the character data to the datetime data type.

Este exemplo mostra a conversão de tipos de dados de data, hora e datetime.This example shows the conversion of date, time, and datetime data types.

DECLARE @d1 date, @t1 time, @dt1 datetime;
SET @d1 = GETDATE();
SET @t1 = GETDATE();
SET @dt1 = GETDATE();
SET @d1 = GETDATE();
-- When converting date to datetime the minutes portion becomes zero.
SELECT @d1 AS [date], CAST (@d1 AS datetime) AS [date as datetime];
-- When converting time to datetime the date portion becomes zero
-- which converts to January 1, 1900.
SELECT @t1 AS [time], CAST (@t1 AS datetime) AS [time as datetime];
-- When converting datetime to date or time non-applicable portion is dropped.
SELECT @dt1 AS [datetime], CAST (@dt1 AS date) AS [datetime as date],
CAST (@dt1 AS time) AS [datetime as time];

J.J.Usando CAST e CONVERTUsing CAST and CONVERT

Este exemplo recupera o nome dos produtos que têm um 3 no primeiro dígito de seu preço de lista e converte o ListPrice desses produtos em int. Ele usa o banco de dados AdventureWorksDW.This example retrieves the name of the product for those products that have a 3 in the first digit of their list price, and converts the ListPrice of these products to int. It uses the AdventureWorksDW database.

SELECT EnglishProductName AS ProductName, ListPrice
FROM dbo.DimProduct
WHERE CAST(ListPrice AS int) LIKE '3%';

Este exemplo exibe a data e a hora atuais, usa CAST para alterar a data e a hora atuais em um tipo de dados de caractere e, por fim, usa CONVERT para exibir a data e a hora no formato ISO 8601.This example displays the current date and time, uses CAST to change the current date and time to a character data type, and finally uses CONVERT display the date and time in the ISO 8601 format.Este exemplo usa o banco de dados AdventureWorksDW.This example uses the AdventureWorksDW database.