Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Converter 'smalldatetime' para 'date' no SQL Server (Exemplos de T-SQL)


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 |
+---------------------+------------+