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

Converter 'datetime' em 'date' no SQL Server (Exemplos de T-SQL)


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