Este artigo contém exemplos de conversão de um smalldatetime valor para uma data valor no SQL Server.
Um dos benefícios de converter um smalldatetime valor até data é que você reduz o tamanho do armazenamento de 4 bytes para 3 bytes. No entanto, você perde o componente de tempo do valor, portanto, só faria essa conversão se não precisasse do tempo.
A pequena data e hora tipo de dados a data e a hora. Seu componente de segundos é sempre definido como zero (:00) e não possui segundos fracionários. Sua precisão é para o minuto mais próximo. Seu tamanho de armazenamento é de 4 bytes.
A data tipo de dados, por outro lado, inclui apenas a data. Sua precisão é para o dia mais próximo. Seu tamanho de armazenamento é de 3 bytes.
Então, para ser claro, quando você converte um smalldatetime valor até data , o ano, mês e dia são copiados. A hora não é copiada.
Exemplo 1 – Conversão implícita
Aqui está um exemplo de uma conversão implícita entre smalldatetime e data .
DECLARE @thesmalldatetime smalldatetime, @thedate date; SET @thesmalldatetime = '2025-05-21 10:15:30'; SET @thedate = @thesmalldatetime; SELECT @thesmalldatetime AS 'smalldatetime', @thedate AS 'thedate';
Resultado:
+---------------------+------------+ | smalldatetime | thedate | |---------------------+------------| | 2025-05-21 10:16:00 | 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 smalldatetime valor para uma data variável.
Neste exemplo, podemos ver que a parte de data do smalldatetime o valor é copiado para a data valor e que a hora não é copiada.
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
para converter explicitamente entre smalldatetime e data . DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS date) AS 'date';
Resultado:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 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 @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(date, @thesmalldatetime) AS 'date';
Resultado:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+