Este artigo contém exemplos de conversão de um datetime2 valor para uma data valor no SQL Server.
Ao converter um datetime2 valor para uma data tipo de dados, você perde a parte do tempo. No entanto, você também reduz o tamanho do armazenamento de 7 a 9 bytes para 3 bytes. De qualquer forma, você só faria essa conversão se não precisasse da parte do tempo.
O datetime2 tipo de dados inclui a data e hora com uma parte de segundos fracionários entre 0 e 7 (isso depende de quantos segundos fracionários são atribuídos a ele). Sua precisão é de 100 nanossegundos.
A data O tipo de dados, por outro lado, não inclui a hora e tem uma precisão de 1 dia.
Exemplo 1 – Conversão implícita
Aqui está um exemplo de uma conversão implícita entre datetime2 e data .
DECLARE @thedatetime2 datetime2, @thedate date; SET @thedatetime2 = '2025-05-21 10:15:30.1234567'; SET @thedate = @thedatetime2; SELECT @thedatetime2 AS 'datetime2', @thedate AS 'date';
Resultado:
+-----------------------------+------------+ | datetime2 | date | |-----------------------------+------------| | 2025-05-21 10:15:30.1234567 | 2025-05-21 | +-----------------------------+------------+
Esta é uma conversão implícita porque não estamos usando uma função de conversão (como as abaixo) para convertê-la explicitamente. Nesse caso, o SQL Server executa uma conversão implícita nos bastidores quando tentamos atribuir o datetime2 valor para uma data variável.
Aqui podemos ver que a data valor inclui apenas a data (sem o componente de tempo).
Neste exemplo, o datetime2 value usa a precisão padrão (que resulta em 7 casas decimais). Isso poderia ser reduzido a qualquer número e o resultado da conversão seria o mesmo.
DECLARE @thedatetime2 datetime2(0), @thedate date; SET @thedatetime2 = '2025-05-21 10:15:30.1234567'; SET @thedate = @thedatetime2; SELECT @thedatetime2 AS 'datetime2', @thedate AS 'date';
Resultado:
+---------------------+------------+ | datetime2 | date | |---------------------+------------| | 2025-05-21 10:15:30 | 2025-05-21 | +---------------------+------------+
Exemplo 2 – Conversão explícita usando CAST()
Aqui está um exemplo de uma conversão explícita. Neste caso, eu uso o
CAST()
função diretamente dentro do SELECT
instrução para converter explicitamente entre datetime2 e data . DECLARE @thedatetime2 datetime2(4); SET @thedatetime2 = '2025-05-21 10:15:30.1234'; SELECT @thedatetime2 AS 'datetime2', CAST(@thedatetime2 AS date) AS 'date';
Resultado:
+--------------------------+------------+ | datetime2 | date | |--------------------------+------------| | 2025-05-21 10:15:30.1234 | 2025-05-21 | +--------------------------+------------+
Exemplo 3 – Conversão explícita usando CONVERT()
Aqui está um exemplo de uma conversão explícita usando o
CONVERT()
função em vez de CAST()
. DECLARE @thedatetime2 datetime2(4); SET @thedatetime2 = '2025-05-21 10:15:30.1234'; SELECT @thedatetime2 AS 'datetime2', CONVERT(date, @thedatetime2) AS 'date';
Resultado:
+--------------------------+------------+ | datetime2 | date | |--------------------------+------------| | 2025-05-21 10:15:30.1234 | 2025-05-21 | +--------------------------+------------+