Este artigo contém exemplos de conversão de um datetime valor para uma data valor no SQL Server.
A consequência óbvia de converter um datetime valor até data é que você perde a parte do tempo. No entanto, um benefício é que você reduz o tamanho do armazenamento de 8 bytes para 3 bytes. De qualquer forma, você só faria essa conversão se não precisasse da parte do tempo.
O datahora tipo de dados inclui a data e hora, com uma parte de segundos fracionários de 3 dígitos. Sua precisão é arredondada para incrementos de 0,000, 0,003 ou 0,007 segundos.
No entanto, a data tipo de dados tem uma precisão de 1 dia (e não inclui a hora, conforme mencionado).
Exemplo 1 – Conversão implícita
Aqui está um exemplo de uma conversão implícita entre datetime e data .
DECLARE @thedatetime datetime, @thedate date; SET @thedatetime = '2025-05-21 10:15:30.123'; SET @thedate = @thedatetime; SELECT @thedatetime AS 'datetime', @thedate AS 'date';
Resultado:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 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 datetime valor para uma data variável.
Neste exemplo, podemos ver que a data valor inclui apenas a data (sem o componente de tempo).
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 datetime e data . DECLARE @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CAST(@thedatetime AS date) AS 'date';
Resultado:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 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 @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CONVERT(date, @thedatetime) AS 'date';
Resultado:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 2025-05-21 | +-------------------------+------------+